Якщо вам це подобається, подумайте про участь у:
Зробіть 12 фрагментів / виразів на тій же мові, що призводять до цифр від 0 до 10 та 42 відповідно, але не записуючи жодних буквальних числових, рядкових чи символьних даних.
Дані, що вбудовуються , як PI()
і ALPHABET()
, є прекрасними, і, наприклад, константи CJam U, X, Y, Z і A, а BLEND, CHORD, CENTER, BREAK і LINES обробляються.
Кожен фрагмент повинен мати можливість стояти самостійно, тобто вони можуть бути не взаємозалежними. Однак всередині одного фрагмента ви можете призначити змінну та використовувати її вільно, якщо ви посилаєтесь на неї безпосередньо по імені, а не через рядок, що містить її ім'я.
Усі фрагменти повинні бути дійсними на комп’ютері відправника на момент надсилання (як повідомляє SE), але не можуть покладатися на незвичні місцеві умови, наприклад, кількість файлів у каталозі, точну дату або час або конкретний ввід користувача .
Приклади дійсних фрагментів
3: INT(LOG10(YEAR(TODAY())))
тому що це залишається правдою в осяжному майбутньому
4: CUBICROOT(LEN(CHARACTERSET()))
тому що набір символів на 256 літер дуже поширений
8: SQRT(SYSTEMTYPE())
тому що 64-бітні системи дуже поширені
Приклади недійсних фрагментів
5: LEN(USERNAME())
тому що більшість людей не використовують "Адміністратора" як логін :-)
9: LOG10(SYSTEMMEMORY())
тому що він працює лише в системах з рівно 1 ГБ пам'яті
42: CODE("*")
тому що він містить літеральний рядок / символ
Результат кожного фрагмента повинен призвести до фактичного числа (значення, int, float тощо), яке можна використовувати для подальших обчислень, використовуючи ту саму мову, що і фрагмент, тобто не текстову рядок, що представляє це число.
Дозволені лише мови на основі символів.
Оцінка - це загальна кількість байтів для всіх 12 фрагментів разом. Нові рядки, що розділяють фрагменти, не враховуються.
Зауважте, що вищезазначені правила можуть перешкоджати участі деяких мов, навіть якщо вони є Тьюрінгом завершеними.
FAQ
Q Чи можуть програми приймати будь-які дані? Так, але ви не можете просто попросити введення і введіть відповідний номер.
Q Чи допускаються фізичні (не дані) цифри?
А так, наприклад LOG10()
.
Q Чи символи в Ruby вважаються буквальними?
A Так.
Q Чи враховує оцінка між новими фрагментами нові рядки?
А Ні.
Q Чи достатньо TI-BASIC "на основі символів", щоб бути дійсним?
A Так.
Q Чи рахуються помилкові та істинні літерали чисел? Ні, вони є прийнятними.
Q Чи можемо ми використовувати цифровий чисел для виклику функції, якщо це єдиний спосіб, і число не впливає на вихід функції? Так, якщо це нормальний спосіб , щоб написати код на вашій мові.
Q Моя мова передбачає, що на початку кожної програми / виразу є [щось]. Повинен я включити його, чи повинні мої фрагменти просто працювати, якщо вони розміщені в середині програми / виразу?
A Вони повинні просто працювати посеред програми / виразу.
Q Що з літерами регулярного виразів? Заборонено, для мов , які тільки роблять регулярні вирази , за винятком.
Q Чи прийнятний один фрагмент коду, який міг би надрукувати всі вказані номери? Ні, вони повинні бути розділені і незалежні один від одного.
Q Чи можу я припустити, як котлован, подібний int main() {}...
або еквівалент?
A Так.
Q Які типи вихідних даних дозволені?
A Будь-який числовий тип даних, наприклад, int, float тощо.
Q Чи потрібно надрукувати результат кожного фрагмента?
А Ні, зробити результат доступним для подальшого використання.
Q Чи дозволені попередньо встановлені змінні?
A Так, і вони скидаються (якщо вони змінені) для кожного фрагмента.
Q чи я і е вважається число літералів? Ні, ви можете використовувати їх.
Q Чи можу я повернути 4 та 2 в різних клітинках за 42?
А Ні, вони повинні бути з'єднані як одне число.
Q Байти чи символи? Bytes, але ви можете вибрати будь-який бажаний кодову.
Q Чи можуть бути використані постійні функції та задані змінні, такі як J 9:
, Actual's 9
і Pretzel 9
?
A Так, якщо словниковий запас обмежений (19 для J, 10 - Насправді та Кредзель).