Анонімний префікс лямбда. Повертає тіло програми.
{
1=≢⍵:⍕⍵ ⍝ single element
(2=≢⍵)∧(⍵[2]=11×⍵[1]):⍕⍵[1] ⍝ 2, 22 etc.
1=≢∪⍵:'⊢',⍕⊃⍵ ⍝ all the same
(⊢≡⊃×⍳∘≢)⍵:'+',⍕⊃⍵ ⍝ linear
((⌊=⊢)!⍣¯1⊢⊃⍵)∧(1∧.=1↓⍵):'!',⍕!⍣¯1⊃⍵ ⍝ factorial followed by all 1s
(⍵[2]∧.=1↓⍵)∧(⍵[1]=10|2⊃⍵):(⍕⊃⍵),'⌈',(⊃⍕2⊃⍵) ⍝ b ab ab ab
e←{∊⍉2 2⍴'+×',⍕¨⍵}¨⍸(⊃⍵)=∘.×⍨⍳10
b←⍵∘≡¨e(({0::⍬ ⋄ ⍎⍵}¨,\)⍴∘⊂)¨⍨(≢⍵)
∨/b:⊃b/e
Q←{'''',⍨⍵/⍨1+''''=⍵}
(5∧.≤⍵)∧(≢⍕⍵)>6+(+/14=⍵)+≢⍵:'{⍺←⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[⍵] ⍝ string fallback
(≢⍕⍵)>9+(+/5=⍵)+≢⍵:'{⍺←¯4+⎕AV⍳⊃⋄1⌽⍺⊢⍵}''',Q ⎕AV[4+⍵] ⍝ offset string fallback
'{⍺←⊃⋄1⌽⍺⊢⍵}',⍕⍵ ⍝ fallback
}
Спробуйте в Інтернеті!
Методи
Це досліджує різні методи і повертає перший корисний, з часом повертається до загальноприйнятого методу.
Одиничний елемент
Якщо у списку є лише один елемент, він повертається як є.
2, 22 і т.д.
Однозначну цифру можна просто повторити, щоб генерувати число в 11 разів більше,
Те ж саме
Ми просто повертаємо найправіше ( ⊢
) число.
Лінійний
f (n) = k × n послідовностей просто вставити плюс перед першим членом.
Факторний слід за всіма 1
Коли перше число n =! M і наступні числа дорівнюють 1, то !m
це рішення, тому що !m
n і m!m
дорівнює 1 і !1
дорівнює 1.
b ab ab ab
Оскільки всі двоцифрові числа є більшими за всі одноцифрові числа, максимум бігу, де передня частина першого числа приклеєна до задньої частини другого числа, є рішенням.
Трирядковий код
Перевірте, чи є яка-небудь формула типу +a×b
.
Рядний запасний
Довгі послідовності без чисел під 5 (оскільки 4 - це розрив рядка) можуть бути кодовані як символи SBCS.
Зсув резервного рядка
Якщо є цифри під 5, ми зміщуємо їх на 9, щоб їх уникнути.
Відступати
Просте конкатенація рядків "{⍺←⊃⋄1⌽⍺⊢⍵}"
і ⍕
введення рядка ( ). Наприклад, [3,1,4]
повертає тіло програми {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
.
Частина в дужках - це амбівалентна функція, це означає, що вона може бути або функцією префікса, або функцією інфіксації. Таким чином, крайній лівий екземпляр буде працювати в режимі префікса, а всі інші в режимі інфікування. Різниця між режимами полягає в тому ⍺
, чи має значення лівий аргумент значення. Якщо цього немає, то йому буде призначена функція ⊃
(спочатку).
Пояснення резервного методу
{
… }
Анонімна лямбда:
⍺←⊃
Якщо немає лівого аргументу ( ⍺
), призначіть функцію ⊃
(першу)⍺
⋄
тоді:
На даний момент наступний код означає дві різні речі залежно від того, чи ⍺
є це список номерів (виклик інфіксації) або функція "перший" (виклик префікса).
Якщо ⍺
є список номерів:
⍺⊢⍵
відкиньте лівий аргумент на користь правого аргументу
1⌽
поверніть цей крок вліво
Якщо ⍺
функція "перша":
⊢⍵
привести правильний аргумент
⍺
виберіть перший елемент цього
1⌽
оберніть його на один крок (неадап на скалярі)
Приклад запуску резервного методу
Виконання 3 1 4
коду, {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
присвоює функцію "перший" ⍺
і таким чином повертає перший елемент; 3
.
Виконання {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
дозволяє крайньому правому лямбда "захоплювати" лівий 3 1 4
як його лівий аргумент, тому ⍺
має значення, яке відкидається на користь 3 1 4
якого потім повертається на один крок вліво і дає 1 4 3
результат. Потім це використовується як єдиний аргумент крайньої лівої лямбда, де ⍺
стає функцією "перший", в результаті чого результат стає першим елементом;1
.
Виконання {⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4{⍺←⊃⋄1⌽⍺⊢⍵}3 1 4
дозволяє крайньому правому лямбда "захопити" середину 3 1 4
як його лівий аргумент, який потім відкидається на користь правого аргументу 3 1 4
, який при повороті на один крок ліворуч є 1 4 3
. Потім він використовується як правий аргумент середньої лямбда разом із 3 1 4
лівим лівим аргументом. Лівий аргумент відкидається для правого, який обертається на один крок ліворуч 4 3 1
. Потім це стає єдиним аргументом крайньої лівої лямбда, тому ⍺
стає "першою функцією", повертаючи перший елемент; 4
.
Оцінка балів
Коли прийде час тестування за допомогою фактичних даних, використовуйте цей тестовий джгут (пов'язаний із заповненими даними тестування). Тестові випадки йдуть у поле Введення, а вихідний результат буде загальним числом байтів усіх 500 програм разом. (Це також призведе до помилки, але це лише тому, що згодом намагається оцінити Вхід як такий.)