MATLAB: 182 strike> 167 strike> 156 символов
Скрипт ulam.m
:
A=1;b=ones(1,4);for i=0:(input('')-2),c=b(4);b=b+i*8+(2:2:8);A=[b(2):-1:b(1);(b(2)+1:b(3)-1)' A (b(1)-1:-1:c+1)';b(3):b(4)];end;disp(char(isprime(A)*10+32))
И отформатирован немного лучше:
A = 1;
b = ones(1,4);
for i = 0:(input('')-2),
c = b(4);
b = b+i*8+(2:2:8);
A = [b(2):-1:b(1); (b(2)+1:b(3)-1)' A (b(1)-1:-1:c+1)'; b(3):b(4)];
end;
disp(char(isprime(A)*10+32))
Тестовые случаи:
>> ulam
2
* *
*
*
>> ulam
3
* *
* *
* **
*
*
>> ulam
5
* *
* *
* * *
* * *
* ** *
* *
* *
* *
* *
Я предполагаю, что вы хотите удалить «первые 1000 строк» с учетом несортированного порядка результатов запроса «select» без аргументов сортировки и критериев , и в этом случае вы делаете что-то не так.
Но в качестве академического упражнения вот как вы это сделаете. Все строки в SQLite имеют поле rowid
, которое вы можете использовать, чтобы найти, где заканчиваются эти 1000 строк.
sqlite> create table t(s string);
sqlite> insert into t values('a1');
sqlite> insert into t values('a2');
sqlite> insert into t values('a3');
sqlite> insert into t values('a4');
sqlite> select * from t;
a1
a2
a3
a4
sqlite> delete from t where rowid < (select rowid from t limit 2,1);
sqlite> select * from t;
a3
a4
http://www.sqlite.org/lang_delete.html
Если у вас был включен лимит на удаление обновлений SQLite
Delete from your_table
where any_filter_you_wanted_as_well
order by if_you_have_a_preference
limit 1000