Використовуйте eval
!
Натхненний відповідь Луїс Mendo в тут .
Анонімні функції в більшості випадків коротші, ніж створення сценарію, для якого потрібен один або більше дзвінків input('')
. Мінус полягає в тому, що петлі та змінні модифікації (наприклад, заміна двох елементів у матриці) неможливо громіздко.
З eval
, ви можете отримати вхід, як і у звичайній анонімній функції, та запустити сценарій, як у звичайному сценарії:
Врахуйте це :
c=(i=@input)('');N=i('');A=i('');for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A
У порівнянні з цим:
@(c,N,A)eval('for C=c,A(flip(k))=A(k=[x=find(A==C),N^2+1-x]);end,A')
Код ідентичний, але вхідний розділ значно коротший.
Це також можна використовувати для зміни вхідних змінних, таких як ця (заслуга Луїса Мендо !):
f(x)eval('x([1,4])=x([4,1])`;