Ṅ×ịß
Спробуйте в Інтернеті!
Посилання TIO додає колонтитул для виклику функції за прикладом програми підказки, показаної на сторінці Esolang (M "автоматична обгортка" для виклику функцій так, ніби вони були програмами, не можуть обробляти раціональні чи фіксовані числа, або, принаймні, у мене немає Я не придумав, як це сказати, тому мені потрібно перетворити функцію в повну програму вручну, щоб мати можливість її запускати.)
Це фактично друкує корисний вихід налагодження; Програма не може бути записана в 3 байти в M, тому що програма, що складається з рівно трьох діад, запускає спеціальний випадок в аналізаторі, тому мені довелося додати додаткову команду, щоб уникнути особливого випадку. Створення його Ṅ
(друк з новим рядком) принаймні дає корисну мету.
ı
i=−1−−−√
Не здійснює введення / виведення (крім halt / no-halt). Введення / виведення - це розширення на підказку (не є частиною самої мови), і не потрібно для цілісного завершення.
Пояснення / передумови
Ṅ×ịß
Ṅ Print {the left argument} and a newline; also resolves a parser ambiguity
ị {The left argument}th element of {the right argument}, wrapping on OoB
× Multiply {the left argument} by {the chosen element}
ß Recursive call; arguments: {the product} and {the same right argument}
[1,2,3]
[1,2,3,1,2,3,1,2,3,…]
rx+s, що є поліномом, і "базове перетворення", побудоване в багатьох мовах для гольфу, насправді є маскою оцінювача поліномів загального призначення. Отже, все, що нам потрібно зробити - це індексувати список списків цифр, конвертувати їх у базу, і ми закінчили, правда?
xx
ḅ
x⊕(x⊗y)x⊗y⊕. Звичайно, ми могли б перемогти ланцюгову поведінку майже на все, що завгодно, але це коштувало б цілого байту, а записи мови для гольфу в цьому питанні стають настільки короткими, що байт - це багато.
Тож я озирнувся і трохи переоцінився. Чи є якісь операції, які ми могли б використовувати замість поліномальної оцінки? В ідеалі - комутаційні, тому нам не потрібно турбуватися про порядок аргументів? Незабаром після цього я зрозумів, що функції Колатца складніші, ніж повинні бути.
s
І звичайно, на відміну від базового перетворення ( ḅ
), множення ( ×
) є комутативним, і, таким чином, не має значення, в якому порядку розміщуються аргументи. Отже, все, що нам потрібно написати ×ị
, а потім розмістити програму в нескінченну рекурсію ß
, і ми маємо повну мову Тюрінга. Правильно?
(x⊙y)⊕(x⊗y)¹×ịß
¹
¹
Ṅ
є хорошим вибором, оскільки він дає корисний вихід налагодження.
Чи можливі три байти? Якщо я чогось не пропускаю, не з цим конкретним вибором мови втілення та реалізації, але на даний момент, напевно, здається, що це можливо було б якось можливо, оскільки існує так багато способів зробити це за чотири і так багато Тюрінга мови, які ви могли реалізувати.
eval
рішенням.