Анонімний префікс лямбда. Повертає тіло програми.
{
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це рішення, тому що !mn і 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 програм разом. (Це також призведе до помилки, але це лише тому, що згодом намагається оцінити Вхід як такий.)