Строка капсули в часі 2016: Наскільки універсальною є ваша мова?


71

Близько року тому 31 грудня 2015 року у мене виникла думка, що:

Ми повинні зробити строкову капсулу. Кожен може додати одного персонажа, і наступні нові роки ми побачимо, хто може зробити найкращу програму з усіх персонажів із наявними тоді езолангами.

Дверна ручка люб'язно зібрані персонажі з PPCG спільноти і тримали їх в безпеці в протягом року.

Цілих 74 людини взяли участь, тож у нас є граючий 74 друковані символи ASCII !

Ось 74 символи рядка капсули часу 2016 року в порядку їх подання:

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

Ось 74 символи рядка капсули часу 2016 у порядку ASCII (відмітка пробілу):

 !!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

З цим не багато працювати, але тут нам подобається виклик.

Змагання

Щоб визначити, яка мова "найкраща" за допомогою рядка капсули часу, у нас виникне 6 (для 201 6 ) завдань, які збільшують труднощі, коли в кожній з них потрібно використовувати підмножину з 74 символів капсули часу.

Наявність 6 чітких викликів допомагає забезпечити конкуренцію більшості мов, але лише найкращі мови зможуть відповісти на них та набрати високий бал.

Оцінка:

  • Кожен виклик буде набраний від 0 до 74, залежно від кількості символів.
  • Вищі бали - кращі.
  • Якщо ваша мова не може виконати виклик, ваша оцінка для цього виклику дорівнює 0.
  • Будь-яке непусте підмножина викликів може бути завершено.
  • Ваш остаточний бал - це сума балів з усіх 6 завдань.
  • Найкращий можливий підсумковий рахунок - 6 × 74 або 444 .

Виклики

1. Бігати

Якщо код мови не може працювати в першу чергу, він взагалі нічого не зможе зробити.

Напишіть найдовшу можливу повну програму (використовуйте лише 74 символи капсули часу, пам’ятайте), яка запускається / виконується без помилок компіляції та часу виконання.

Не має значення, чим займається програма, не має значення, чи є вхід / вихід чи входить в нескінченний цикл, важливо лише те, що вона працює без помилок. (Попередження в порядку, як і помилки, спричинені неправильним введенням користувача.)

Коментарі дозволені, тому це може бути так само просто

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

у Python за рахунок 74.

(Не бійтеся відповідати, якщо це єдиний виклик, який ваша мова може виконати, але не очікуйте багато голосів.)

Оцінка = тривалість програми (довша програма краще)

2. I / O

Мова, яка не має форми введення чи виведення, майже така ж марна, як та, яка не може працювати.

З урахуванням символу ASCII для друку від !(0x33) до }(0x7D) включно, виведіть символ ASCII для друку перед і після нього.

Вихід може бути довжиною два рядка або списку, або символи, розділені пробілом або новим рядком.

Наприклад , якщо вхідний сигнал }на виході може бути |~або ["|", "~"]або | ~або |\n~.

Аналогічно, "це вихід для !і ACє виходом для B.

Оцінка = 74 - тривалість програми (краща програма краща)

3. Розгалуженість

Умови часто є вимогою до повноти Тюрінга , що часто є вимогою до корисної мови.

Давши додатне ціле число, якщо воно закінчується десятковими цифрами, 16то змініть 6на a 7і виведіть результат; в іншому випадку виведіть вхід без змін. Ви можете використовувати рядки для введення / виводу, якщо бажано.

Приклади:

2016 -> 2017
16 -> 17
116 -> 117
1616 -> 1617
6 -> 6
15 -> 15
17 -> 17
106 -> 106
2106 -> 2106

Оцінка = 74 - тривалість програми (краща програма краща)

4. Loopability

Мова, яка не може робити циклів, породжує повторюваний код настільки стомлюючим, що вам потрібно зробити перерву в програмі на деякий час.

Враховуючи додатне ціле число, виведіть ASCII-квадрат із такою довжиною сторони, заповнений малюнком концентричних менших квадратів, який чергується з будь-якими двома окремими символами для друку ASCII . Вони не повинні бути однаковими двома символами для різних входів.

Наприклад:

1    <- input
X    <- output

2
XX
XX

3
XXX
X-X
XXX

4
XXXX
X--X
X--X
XXXX

5
YYYYY
Y...Y
Y.Y.Y
Y...Y
YYYYY

6
XXXXXX
X----X
X-XX-X
X-XX-X
X----X
XXXXXX

7
ZZZZZZZ
Z-----Z
Z-ZZZ-Z
Z-Z-Z-Z
Z-ZZZ-Z
Z-----Z
ZZZZZZZ

Оцінка = 74 - тривалість програми (краща програма краща)

5. Математика

Мова, яка не підходить для чисел та математики, також може бути для гуманітарних спеціальностей.

Не приймайте жодних даних, але виведіть 72 цілі дільники 2016 року , додатні та негативні, у будь-якому порядку. Вихід може бути відформатований у вигляді рядка або списку розумним чином.

Приклад:

-1, -2, -3, -4, -6, -7, -8, -9, -12, -14, -16, -18, -21, -24, -28, -32, -36, -42, -48, -56, -63, -72, -84, -96, -112, -126, -144, -168, -224, -252, -288, -336, -504, -672, -1008, -2016, 1, 2, 3, 4, 6, 7, 8, 9, 12, 14, 16, 18, 21, 24, 28, 32, 36, 42, 48, 56, 63, 72, 84, 96, 112, 126, 144, 168, 224, 252, 288, 336, 504, 672, 1008, 2016

Оцінка = 74 - тривалість програми (краща програма краща)

6. Езотерика

(Ні, не це .) Ми в PPCG любимо наші езотеричні речі , і лайки є хорошим прикладом цього.

Напишіть найдовшу квітку, яку ви можете, згідно з звичайними правилами квине . Quine - це програма, яка не бере ніяких даних і не видає себе.

Оцінка = тривалість програми (довша програма краще)

Конкретні правила

  • У кожному з 6 викликів ваша програма повинна бути підмножиною із 74 символів часової капсули, переставлених будь-яким способом. Це може бути порожній підмножина або неналежна підмножина , тому кожна з ваших програм може містити як 0, так і цілих 74 символи.
  • Єдиний кінцевий новий рядок в кінці вводу / виводу / коду добре в будь-якому місці, оскільки деякі мови цього вимагають, або його неможливо легко уникнути.
  • Якщо не вказано інше, кожен виклик може бути виконаний як функція або повна програма відповідно до наших за замовчуванням .
  • Усі завдання повинні бути виконані однією мовою.
  • Ви повинні використовувати мову (або версію мови), виготовлену до 2017 року в будь-якій точці Землі .
  • Будь-хто може відповісти, додали ви символу в капсулу часу чи ні.

Сміливо використовуйте символи капсули часу 2016 у власних завданнях.


4
Так: виклик, де JavaScript може перевершити!
Пуховик

1
Обговорення в чаті для співпраці над деякими рішеннями.
user48538

6
досить впевнений, що 6×74 or 444це неможливо, оскільки це означатиме порожні програми, які якось поводяться інакше. отже, 442 - це фактичний мінімум, оскільки це означає, що дві програми з 3-х вхідних даних мають в собі знак
Destructible Lemon

7
Моя мова - Java. Я програю за замовчуванням: P
Weckar E.

2
Зробимо це ще раз!
ev3commander

Відповіді:


37

Гліфо , 74 + (74 - 36) = 112

1. Виконати (74 байти)

!!#%QTQT@=A@$!!$)()*!&))+...1449:@HILOQZ\\^`````````eefmpx|||{~~~~~~y~|~ ~

2. IO (36 байт)

!!!#!$!$4419TAHT\ee\OQQQ))*+)..)|~~~

Пояснення

Гліфо здавався досить вдалим вибором для цього виклику, тому що його не цікавить реальних персонажів, які використовуються. Натомість він розглядає групи з чотирьох символів і вибирає команду, засновану на схемі повторення цих чотирьох символів. Оскільки серед рядків капсули часу є багато дублікатів, ми досить гнучкі в програмах, які ми можемо писати, за винятком того, що ми обмежені програмами з 18 команд (що в Glypho - це не багато). Хоча це дозволило мені вирішити перші дві проблеми досить легко, я сумніваюся, що Гліфо може запускати інших з такою кількістю символів.

Я перевірив їх за допомогою інтерпретатора Java, отриманого з 2006-06-23 року на машині зворотного зв'язку , яка використовує дещо інше відображення команд:

0000 n
0001 i
0010 >
0011 \
0012 1
0100 <
0101 d
0102 [
0110 +
0111 o
0112 *
0120 -
0121 ]
0122 !
0123 e

Програма Run перекладається на:

1d-+[...]

Де ...якийсь мотлох, який я не переймався перекладом.

1      Push 1.
d      Duplicate.
-      Turn into -1.
+      Add. Gives 0.
[...]  Skip the rest because the top of the stack is zero.

Програма IO перекладається на:

id1-+o1+o

Ось що це робить:

i   Read a character.
d   Duplicate.
1   Push 1.
-   Turn into -1.
+   Add to character, i.e. decrement it.
o   Output it.
1   Push another 1.
+   Add to character, i.e. increment it.
o   Output it.

24

CJam, 74 + (74 - 14) + (74 - 26) = 182 бал

1. Виконати (74 байти)

e# !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````efmpxy{||||~~~~~~~~~

Переміщення e#на фронт коментує всю лінію.

2. Введення / виведення (14 байт)

9`)ZH*+~):Q(Q)

Денніс врятував 8 байт.

Пояснення:

9`                   Push "9".
  )                  Extract character '9'.
   ZH*               Push 3 * 17 = 51.
      +              Add to get character 'l'.
       ~             Eval as CJam code. Command l reads a line.
        )            Extract the only character from the input line
         :Q(         Assign to Q and decrement
            Q)       Push Q and increment

3. Розгалуженість (26 байт)

4`)4Z|`I!`|~^~~T$AT$*%H(=+

Пояснення:

4`)                            Push character '4'
   4Z|`                        Push 4 | 3 = 7, stringify
       I!`                     Push !18 = 0, stringify
          |~                   Setwise or and eval to get 70
            ^                  XOR to get 'r'
             ~                 Eval to read input
              ~                Eval the input as CJam code to turn
                               it into an integer
               T$              Duplicate it
                 A             Push 10
                  T$*          Duplicate that and multiply → 100
                     %         Mod the copy by 100
                      H(=      Compare to 17 - 1 = 16
                         +     Add the result (1 or 0) to the original

Пізніше я перегляну інших. ( EDIT : я сумніваюся, що вони можливі без блокових чи рядкових літералів ... можливо, математичний?)


Для №2 ви можете використовувати 9`)ZH*+~):Q(Q).
Денніс

11

J, оцінка 71 + (74 - 19) = 126

Завдання 1, довжина 71

AHILO=:( |T`T`Z`e`e`f`m`p`x`y|.~~%~@{|~^|Q@Q@Q+.*.449!~!~!~!!#$$&1\\~~)

Це визначає дієслово AHILOбути внутрішньою. Невикористаний:

)))

Я не думаю, що існує жодного способу отримати довше, ніж це.

Завдання 3, довжина 19

+($#~$~4)=1e4|&%:*~

Спосіб виконання цього завдання без обмежень полягає +16=100|]в наступному:

        ]  Input
    100|   mod 100
 16=       equals 16? (Evaluates to 1 or 0)
+          Add to input.

У нас є +, =і кілька копій або |в нашому розпорядженні, і це легко обійти ], але цифри є більш проблематичними. Ось перша частина, яка обчислює вхідний модуль 100:

1e4|&%:*~
       *~  Input squared (multiplied with itself).
1e4        The number 10000.
   |       Perform modulo
    &      on
     %:    their square roots.

Після того, як ми закінчимо це, давайте створимо число 16. Простий спосіб - це *~4(4 помножені на себе), але ми вже використовували, *так що це заборонено. Замість цього ми зробимо маніпуляцію з масивом.

($#~$~4)
    $~4   Reshape 4 to shape 4, resulting in the array 4 4 4 4.
  #~      Replicate wrt itself: replace each 4 by four 4s.
 $        Take length.

Робота

2

Це, безумовно, неможливо. Єдині способи маніпулювання символьних значень a.і u:, і ми маємо доступ до ні.

Тепер, якби ми могли використати aзамість, скажімо,, Aто це було б рішення:

Q{~(*^.4%9 1)+I.~&Q=:a.

Найважче, щоб змусити це працювати, було створення числа -1.

Q{~(*^.4%9 1)+I.~&Q=:a.
                     a.  The array of all bytes.
                  Q=:    Bind it to Q
              I.~&       and find the input's index in it.
   (        )+           Add the following array:
    *                    Signum of
     ^.                  logarithm of
       4%                4 divided by
         9 1             the array 9 1.
                         This evaluates to -1 1.
Q{~                      Index back into Q.

4

(*.1:"|~@+.)

Це створює форму лушпиння, але я не можу знайти спосіб генерування символів. На жаль

5

Справді, це здається найлегшим із завдань, які потрібно виконати в Дж. Однак, без i.цього це буде досить важко.

6

Це, мабуть, неможливо без фальшивої лайки 449або подібного, тому що рядок капсули не містить лапок або будь-якого іншого способу отримання струн J.


У завданні 2 Q{~1+I.~&Q=:a.подається наступний символ: прив’яжіть алфавіт a.до Q, знайдіть в ньому індекс введення I., додайте його та індексуйте Q. Спробуй це. Єдина проблема, яка залишається - це виготовити -1...
Zgarb

Крім того , завдання 3 може бути зроблено без строкових функцій: +16=100&|. Вам потрібно якось випустити 16 і 100.
Згарб

@Zgarb (1) Так ... (2) О! Круто! Гммм не повинен бути занадто важким
Конор О'Браєн

Ха, я думаю, що у мене 3: +($@#~@$~4)=1e4|&%:*~Це було надзвичайно прикро, тому що у нас є лише один з (&=:+*двох і два 4.
Згарб

І ось ось 2: Q{~(*^.4%9 1)+I.~&Q=:a.Я зрозумів, що логарифм ^.дає від'ємні числа для входів строго між 0 і 1, і ми маємо %для отримання дробів і *для отримання результатів до -1 і 1.
Згарб

8

PowerShell - Загальна оцінка: 74

1. Виконати - оцінка: 74

#~= `TeQ.)`~H|$QL4yA)\*`!^O$1)!Z`!`~|\`&T@!x+e(f|Q`.|!4%.{~`:~~)m@~`@p~I9~

Оскільки в PowerShell це надзвичайно важко (кожен можливий метод отримання вводу неможливий із поданими символами, наскільки я можу сказати), я принаймні вирішив рандомізувати перший виклик, тому ми не всі копіюємо приклад безпосередньо з посади.

Тож ось генератор випадкових викликів 1 відповідей (для мов, де #є коментар):

'#'+$(-join([char[]]' !!!!!$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~'|Get-Random -Count 73))

Спробуйте в Інтернеті!


Я думаю, ти прав. Найближчим до нас може стати те, $^що є "першим знаком попереднього рядка в сеансі", що було б вкрай обмеженим і, швидше за все, серйозним згинанням стандартних правил вводу / виводу.
AdmBorkBork

@TimmyD так, $^у будь-якому випадку сеанс новий.
британіст

8

меми , оцінка ( 62 65 + 70) 135

1: Виконати

Я видалив усі backtikks ( `) та математичні оператори. Вони конфліктували, оскільки не було достатньої кількості, щоб задовольнити кожного одинакового та бінарного оператора. Я залишив трохи в, в результаті чого +3 байти . Результатна програма:

 !!!!!#$$%&())))...+1^4*49:=@@@AHILOQQQTTZ\\eefmpxy{||||~~~~~~~~~

Я поняття не маю, чому і як це працювало. Принаймні, це не викидає жодного винятку із виконання C #, а тому не завершує роботу.

6: Квіне

Ви знаєте, якби в цих 74 символах був десь -або малий регістр q, це було б надто просто. Я радий за Iоператора, принаймні.

1/4I

Цей код не зовсім очевидний. Ось пояснення:

1    Set object to 1 (1)
/4   Divide by 4     (0.25)
I    Set object to a fraction string. (1/4)

Рядки дробу (наприклад 1/4) відображаються з I в кінці, щоб точно вказати це. IОператор, як правило , марно, я додав його для інших засобів, але агов, це працює як це!

Наведений вище код недійсний. Дурний мене не бачив, що 74 символів не містять жодного оператора поділу, forwardslash ( /). Я придумав щось інше:

True

Пояснення:

T    Set object to "true" (bool value)
rue  None of these are valid tokens, so they don't get interpreted.

Виходи True(через те, як C # обробляє Boolean.ToString()великі, а не малі літери). Не впевнений, чи це належна королева, тим часом я все-таки тріскаю голову про дійсну, справді правильну та інтуїтивну.

Може, можливо, також вирішити завдання вводу / виводу та математики, але мені не вистачає конкретних жетонів (символів), які не входять до 74 символів.


8

Brainfuck, 74 байти

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

Мені просто довелося.

Пояснення:

Будь-який символ, який не є дійсним символом Brainfuck, розглядається як коментар. Єдиний код, який насправді працює:

.+..

Це не дає виводу для друку, оскільки ні 0, ні 1 не є символами для друку в ASCII. Однак це не викликає помилок, тому ми успішно виконуємо перший виклик.


3
Це насправді дає вихід. Він виробляє цих персонажів. Вони можуть бути "не для друку" (читати: видно), але вони все ж надсилаються до stdout.
mbomb007

7

Математика, оцінка 62

Я був би здивований, якщо хтось може зробити завдання 2-6 в роботі Mathematica. Ось найкраще, що я зробив із завданням 1:

A:=1.`!#&@(4`+4.`*9.`^$$H~I~L~O~Q~Q~Q~T~T||Z||e@@efmpxy%)!!!!

Визначає досить тупу функцію Aз постійним значенням. 12 невикористаних символів:

)))\\`````{~

6

Октава, оцінка 74

1. Бігати

x =@(AHILOQQQTTZeefmpy)+.1||!!!!!~~~~~~~~~4.^.4||9%#$$)))*@@\`````````{\&:

50 з цих символів є частиною функції, а решта 24 - ні.

Що це робить:

x =@(AHILOQQQTTZeefmpy)створює функцію, xяка може приймати змінну AHILOQQQTTZeefmpyяк вхід.

Щоб зрозуміти решту:

a||bвикликає функцію і all()на, aі на b. Якщо один або обидва з них повертають істину, ||оператор поверне істину.

!aі ~aозначає те саме, що вони обидва not(a).

a.^b є стихійною силою (a(1)^b(1), a(2)^b(2) ...)

Продовження пояснення

Я скорочую кожен із кроків, коли йду далі:

4.^.4||9  % This is 4 raised to the power of .4||9
          % .4||9 is true, since both .4 and 9 are true
          % true is evaluated to 1 when used in an expression
...       % 4 raised to the power of 1 is simply 4.
4         % The above expression simplified

І:

!!!!!~~~~~~~~~4  % ! and ~ are the not() operator, so this is equivalent to:
not(not(not(not(not(not(not(not(not(not(not(not(not(not(4))))))))))))))

Є парне число not, тому це еквівалентно тому, not(not(4))що є trueабо 1.

+.1||1      % This is equivalent to all(+.1) | all(1), which returns true

Решта коментується.


6

*> <> , загальна оцінка = 74

1. Бігай, оцінка 74

f:4%*e+e14=p!Q H@~^)$.`~A|Q)~`\ZI~O.~@``#|9@)T\T`(!``|`~!y!`)Q~$x.|m~~&!L{

Спробуйте тут!

Це було надзвичайно важко без ;персонажа. Я насправді думав, що це буде неможливо на пару миттєвостей, поки я не побачив %, я в основному відмовився.

Це також дійсна програма <<>.

Пояснено (пропущені невідповідні частини)

f:4%*e+e14=p!Q 

f:               copy 15
  4%             pop 15, push 15%4 (3)
    *            pop 15 and 3, push 15*3 (45)
     e+          pop 45, push 45+14 (59, ascii ";")
       e         push 14
        14=      push 0
           p     replace coord (14, 0) with ";"
            !Q   skip Q (this is just filler)
              ;  end execution

Виклики, з якими стикаються

Я можу спробувати інші виклики ... вони виявляться надзвичайно важкими і можуть спричинити згинання правил дивними способами, але ліберальне використання |дзеркал та !батутів повинно зробити хоча б ще один виклик.

Ці виклики особливо важкі, оскільки нам не дозволено жодних виходів з *> <> ( oі n), або навіть викликів функцій ( C), функцій return ( R) або програмних термінаторів ( ;). Незважаючи на те, що ми також не вистачаємо iдля введення, ми все одно можемо розмістити вкладку на стеку, що є плюсом. Ще одним плюсом є те, що ми отримуємо єдину pінструкцію, яка дозволяє нам замінити інструкцію в кодовому полі. Це може бути використане кілька разів (ще не з'ясовано практичного способу), що би почало робити інші програми більш можливими (оскільки ми могли б генерувати дві чи більше інструкцій).


5

Хаскелл, оцінка 63

1. Виконати:

(!!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~)fmpxyAHILOQQQTTZ e=14`e`49

Не використовуються є )))```````{. Коментарі в Haskell є --або {- ... -}, так що не просто всі коментарі версія.

Цей код визначає оператор інфікування, !!!!!#$$%&*+...:@@@\^||||~~~~~~~~~який бере два аргументи:

  1. fmpxyAHILOQQQTTZ який ігнорується і тому може мати довільний тип
  2. e, яка повинна бути функцією, що приймає два числа

eПотім у функціональному тілі застосовується 14 та 49, використовуючи `позначення -infix.

Приклад використання:

Prelude> () !!!!!#$$%&*+...:@@@\\^||||~~~~~~~~~ (*)
686

Оператор застосовується до (), порожній кортеж та (*), 14*49 = 686обчислюється оператор множення .

Спробуйте в Інтернеті!

Інші виклики

Я сумніваюся, що будь-який з інших викликів можливий, особливо це стосується відсутності можливих імен змінних, які можуть з’являтися двічі, що є лише e(або чимось подібним eQT), оскільки імена змінних не можуть починатися з великої літери. Звичайно, наявність одного лише =не допомагає.


5

Pyth, 131 на даний момент (2 виклики завершено)

1. Біжи, 74

# `````````!!!)!)!)*$AOeIefLmpxQ|Q|y|Q|~~~~~~~~~()${+%&\=@@@^\:.1.4.49TTZH

Ця програма не приймає жодних даних і не створює результатів.

Ця програма використовує $$, що дозволяє виконувати довільне виконання коду, і так заборонено в Інтернеті, тому ця програма в Інтернеті працює в автономному режимі. Ось його результат компіляції, тож ви можете побачити, що насправді запускається:

while True:
 try:
  (repr(repr(repr(repr(repr(repr(repr(repr(repr(Pnot(Pnot(Pnot()))))))))))))
  imp_print(Pnot())
  imp_print(Pnot())
  imp_print(times(AOeIefLmpxQ|Q|y|Q|~~~~~~~~~(),uniquify(plus(mod(("=" and lookup(lookup(lookup(Ppow(":",.1),.4),.49),T)),T),Z))))
  imp_print(H)
 except Exception:
  break

Досить складно написати програму з довільними символами, яка не помиляється в Pyth. Я поставив перед собою додатковий виклик вимагати, щоб програма запускалася, не вимагаючи також введення користувача.

Першим кроком є ​​використання #всіх помилок. Далі, нам необхідно , щоб уникнути помилок , викликаних ~, Iі L, кожен з яких має свої власні дані. Це досягається, розміщуючи їх всередині $$, що вбудовує їх у вихідну компіляцію, і таким чином підпорядковує їх правилам компіляції Python, а не Pyth's. Нарешті, щоб уникнути прийому даних користувача, різні лексеми arity 0 (Змінні та подібні) розміщуються в кінці, а Qs переміщуються всередині $$блоку.

2. ІО

Це буде неймовірно складно, якщо це навіть можливо. Жодна з функцій Pyth, яка створює довільні рядки або символи, не існує, окрім .f, і це не дуже добре створює довільні символи.

3. Розгалуженість: 74 - 17 = 57

|&x%Q*TTye|LZ9Q+1

Спробуйте в Інтернеті

Еквівалентною програмою Pyth було б:

?n%Q100 16Q+1

Цей код приймає модуль введення 100, порівнює його з 16, а потім використовує потрійний для вибору між входом і входом плюс один. Через обмеження характеру я здійснив кілька підстановок:

  • Замість того ?, трикомпонентної я використовував |&, orто and, що має таку ж функціональність, за винятком того, що вона порушує , якщо вхід дорівнює нулю, але так як ми гарантовано натуральне число вхід, це нормально. (Це могло бути виправлено без додаткових символів, але це простіше.)

  • Замість того, щоб безпосередньо порівнювати два числа, я беру їх XOR x, що дорівнює нулю, якщо і тільки якщо вони рівні, як бажано.

  • Замість того, щоб писати 100безпосередньо, я генерую його *TT, оскільки Tініціалізується на 10.

  • Замість того, щоб писати 16безпосередньо, я генерую це за допомогою ye|LZ9. |LZпо суті функціонує як функція діапазону, так |LZ9дає [0, 1, 2, 3, 4, 5, 6, 7, 8]. eбере фінальний елемент списку, даючи 8. yподвоює його, даючи 16за бажанням. За допомогою додаткового +чи додаткового *я міг би зберегти персонажа, але вони обидва більше корисні.

Більше!



3

JavaScript (ES6), оцінка = 74

1. Виконати, 74 байти

Z=` !!!!!#$$%())))...1449:@@@\AHILOQQQTT^\`eefmpxy{||||~~~~~~~~~`*``+``&``

6. Езотерика (недійсна)

Для запису моя запропонована квинка була:

1.4e+49

що виявилося недійсним, про що йшлося в коментарях нижче.


Ця квітка дійсна.
wizzwizz4

3
Квінка не дійсна. Відповідні правила пов'язані у виклику. Зокрема, будь-яке квінти, яке базується на одному буквальному, не в змозі кодувати частину джерела в іншій частині джерела. cc @ wizzwizz4
Мартін Ендер

@MartinEnder У моєму браузері ця програма виводить вихідний код буквально. Це твердження, яке оцінює для себе. Я не впевнений, що ти кажеш; немає різної частини джерела.
wizzwizz4

1
@ wizzwizz4 ця спільнота має більше вимог до лайків, ніж просто "програма друкує власне джерело", оскільки це дозволяє приймати різні види обману, які не відповідають духу лайків. Дивіться посилання.
Мартін Ендер

1
@ wizzwizz4 вгорі проголосував відповідь "Потрібно мати можливість ідентифікувати розділ програми, що кодує іншу частину програми. (" Різне ". Це означає, що обидві частини відображаються в різних положеннях.) для великого блага, виклик (і відповідна відповідь) на кілька років старший за пов'язаний мета-пост.
Мартін Ендер

3

Сітківка, оцінка 74

1. Бігай, оцінка 74

)))` !!!!!#$$%&()*.+..1449:=@@@AHILOQQQTTZ\\^````````eefmpxy{||||~~~~~~~~~

Я перемістив додаткові парени до конфігурації, щоб вони врівноважувались у регулярному вираженні. Я також перемістився `праворуч після них і змінився +.на .+.

Спробуйте в Інтернеті

Інші, ймовірно, неможливі, оскільки немає нових рядків. Також немає -транслітерації або dдля класів символів цифр.


3

Піп, оцінка 74 + (74 - 19) = 129

Стільки задників із цитатою Nary, яку можна побачити, одинарну чи подвійну!

Завдання 1, оцінка 74

`` `\``!!!!!`#$$%&())))*+...1449:=@@@ILOQQQTTZ\^efmpx{|||~~~~~~~~~`|`yeAH`

В основному це лише серія візерункових (регулярних виразів) літералів на задній панелі, остання з яких надрукована. Оскільки є непарна кількість задніх поверхонь, нам доведеться відхилити одну від них ( `\``). Спробуйте в Інтернеті , -wдодавши прапор, щоб довести, що попередження не створюються.

Завдання 3, оцінка 55 (довжина 19)

e+!!e%(1.#x.!9)=4*4

Використання досить дивного методу введення - п'ятого аргументу командного рядка - це можливо. Спробуйте в Інтернеті!

                     e is 5th cmdline arg; x is empty string
       1.#x.!9       Concatenate 1, 0 (length of x), and 0 (not 9)
    e%(       )      e mod 100...
               =4*4  ... equals 16?
  !!                 Logically negate twice
e+                   Add to e (+1 if number mod 100 is 16, +0 otherwise)
                     Expression is autoprinted

Інші завдання

Можна отримати введення для завдання 2 тим самим методом, що і завдання 3 вище. Проблема полягає в перетворенні коду ASCII і поверненні до символу. Перший може бути виконаний за допомогою A, але останній вимагає Cабо, можливо, індексацію PAзмінної. Побудова та оцінка коду не обійтися без цього V. Я не думаю, що завдання можливо.

Завдання 4 є складним навіть без обмеженого набору символів. За здогадками, знадобиться список (не використовуючи []роздільники або RL(повторний список) і маючи лише один шанс на використання AL(список додавання) - невірогідний) або можливо щось із CG(координатна сітка) або MC(координатні карти), обидва заборонені .

Завдання 5 - на межі можливості. Цикли можуть бути важкими, оскільки Fабо і Map неможливі, і діапазони не можуть бути побудовані за допомогою ,. З Tхворими може щось зробити . Зростання може бути x:x+1різноманітного (очевидно, із змінною, окрім x, однак). Можна перевірити роздільність %. Але я не думаю, що є достатньо символів - особливо повторених листів - для того, щоб зробити все, що потрібно, щоб відбутися.

Завдання 6 виглядає абсолютно неможливою. Всі відомі лайки Піп є "в них. Вони також використовують R(замінити), RP(repr) або V(eval), жоден з яких не доступний.


2

Власне, оцінка (74 + 0 + 0 + 0 + 0 + 0 ) = 74

Так, рядок капсули буде працювати з Фактично, як і для Run, оскільки насправді відхиляє будь-які помилки, і кожна помилка стає NOP.

H@~*^)$.~+1A|Q)p~\Z!IQ~e:O.~@#|9@)Tf\eT`=(!|~!y!) Q~$x.4|m4~~&!L{%( Спробуйте в Інтернеті! )

Хоча це створить безлад з речей (але також і його джерело один раз: 3).

Однак я буду працювати над іншими проблемами.


1
Програма quine буде (сподіваємось) буде досить простою, якщо ви зможете зробити кілька опцій в шурупи.
wizzwizz4

1
Програма quine не проста. Ви взагалі не можете використовувати Q(оскільки це вбудований в авінг) і немає подвійних лапок, тому ви не можете робити жодне форматування рядків. Я деякий час працював над цим вчора, і я впевнений, що інші програми неможливі лише з 74 символами.
Mego

Та , здається, не бути похилим е ... :(
user48538


2

(зловживали) PHP, 74 + 74 = 148

H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

Інтерпретатор PHP просто скидає вихідний код, поки не знайде, <?оскільки нам не вистачає <будь-якої перестановки цих символів - це запущене квіно. Я думаю, це не так гірше, ніж використання вбудованої команди quine: P


9
Це не відповідає нашим специфікаціям для ласощів, дивіться тут . Він не кодує себе (тобто він насправді не друкує, він просто трапляється через компілятор.
Rɪᴋᴇʀ

@Easterly перекладач ставиться до кожного символу так само, output this charпоки він не відповідає <. Я не кажу, що це здатна до корисного навантаження, або що я кажу, я просто кажу, що це не має різниці для мови, яка має особливу приказку output the source. Якщо це неправдива відповідь для частини 1, то будь-яка мова, яка приймає будь-які дані без помилок, також не відповідає дійсності. Я не думаю, що це більш образливо, ніж більшість відповідей тут.
Крістоф

4
@Christoph це дійсно для першої частини, але це не є дійсним квине за правилами, пов'язаними в виклику. Ця спільнота вважає quine дійсною, якщо ви можете ідентифікувати розділ джерела, що кодує іншу частину коду. У вашій програмі кожен персонаж кодує лише себе.
Мартін Ендер

@MartinEnder: #! / Bin / cat вважався королевою раніше.
Джошуа

@Joshua дійсно, але в наші дні це не так, і жоден не вважається котом мовою програмування.
Мартін Ендер

2

Математика, оцінка 68

`A: = .1% *. 44y # +. 9 ^` H @ `$ I @` L @ (`$ O ~` Q ~ `Q ~` Q ~ `T ~ T ~ Z ~ e ~ e | f | m | p | x) !!!!! & \

Зверніть увагу на зворотній новий рядок. Я не вірю, що будь-який з інших викликів можна досягти за допомогою Mathematica.


2

Лабіринт, оцінка 74

AH)
IL)
OQ:
`=!)~`{+4.@ !!!$$%&(*..149@@TTZ\\^```eefmpxy||||~~~~~~~~
`Q#
`Q)
``!

Я впевнений, що будь-який асортимент цих персонажів створює дійсну програму "Лабіринт", але щоб зробити її хоч трохи цікавішою, це виводить 2016цифру за цифрою. (Підсумовуючи: підсуньте 2 2на стек, поп / друкуйте один, перемістіть інший в допоміжний стек, надрукуйте 0, натисніть 2 1на стек, поп / друк 1, з кроком, побіжно не, заперечуйте (що останній 1є a 3в цій точці), підсумовуйте зі 2складом aux, 5 * 10 + 4 = 54, друкуйте як значення ascii, закінчуйте)

Більшість довгих рядків просто ігнорується, оскільки @припиняється програма.

Завдання 2, 3 і 4 неможливі, оскільки жодна з команд введення Лабіринту не доступна ( ,або ?), і я не придумав нічого для 5 або 6.


2

SmileBASIC, 48 балів

виклик 1:

@LOQQQTTZ A$=H$+@efmy+@9414*!exp(!!.||!!.#||I%):

пояснення:

@LOQQTTZ 'label
A$= 'set value of A$ (string)
H$ 'string
+@efmy 'adds label, interpreted as string literal
+@9414 'adds label, interpreted as string literal
*!exp( 'multiplies by logical not e^x (= 0)
!!. 'not not 0.0 (= 0)
||!!.# 'or not not 0.0 converted to a float (= 0)
||I% 'or I% (integer variable)
: 'equivalent to a line break, does nothing here

інші:

Немає ніяких команд введення / виводу, тому решта неможливі.

Все-таки непогано для справжньої мови без використання коментарів.


+1 по-справжньому прекрасно. Мені було цікаво, як я зроблю щось із цього і ніколи цього не можу отримати. Що це навіть робить?
равлик_

1

MATL , загальний бал 74

1. Бігай, оцінка 74

`4.e4 1.$!!!!!T+Zyf9.)AH^ILx@Q@Q@Qm||||~~~~~~~~~:=Tp*O%#$&()))\\````````e{

Все, що стосується, %- це фактичний код. %є символом коментаря, тому символи праворуч ігноруються.

Програма виводиться 1без помилок.

Спробуйте в Інтернеті!


1

баш, оцінка 74

1: Виконати. Ми можемо запустити всі 74

#H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%

6: Езотерика:

Порожня програма - це квин в баш.

Без будь-яких символів пробілу нічого іншого в списку неможливо зробити. Ерго, у мене є виграшний баш-запис.


Примітка до правил: Якщо хтось кидає виклик, що порожній не є дійсною квинею та виграє, у мене все ще є переможний запис (без будь-якої квинки). Якщо, з іншого боку, я не розміщую її, а хтось інший робить це, і вони виграють виклик, вони мене перемагають. Так там і залишається.
Джошуа

1

Perl 6 , загальна оцінка 74

1. Бігай, оцінка 74

my @TOTAL=$!||(e*4...9^e)Z+1~4||!!Q`{fp)))\#\&`~Q!```HI````!~Q:x~~~$~@~@~%

Без коментарів.
(Просто поклавши #на передню частину, щоб зробити все, що коментар також працює, але це веселіше.)

Робота

Це підмножина мови Perl 6, яка використовує лише дозволені символи:

Константи: е

Назви типів: IO

Функції: експ

Методи:
    для типу IO: .e .f .x
    (... напевно, більше.)

Оператори: | інфікс: | приставка:
    ----------- + ----------------------- + ---------
    числовий: | + * + ^ + | + &% | + + ^
    рядок: | ~ х ~ ^ ~ | ~ & | ~
    булева: | || ~~ | !
    стики: | | & ^ |  
    різне: | =: = Z .. ... |  

синтаксис:
    кількість літералів: 1 4 9
    рядкові літерали: Q` `Q! ! тощо.
    команди оболонки: Q: x` `Q: x! ! тощо.
    Яка б зірка не була: *
    змінні: мій \ $ @ &
    групування: ()
    коментарі: # # `()
    непросторово: \

Безпосереднім перешкодою, що запобігає проблемам 2-6, є те, що, схоже, не існує способу зробити введення-виведення:

  • Якщо ми припускаємо, що файл називається f, ми можемо використати, Q`f`.IO.eщоб перевірити, чи існує він, або Q`f`.IO.xперевірити, чи він виконується. Але ми не можемо її читати чи писати.

  • Ми можемо використовувати Q:x` `для запуску команди оболонки (якщо припустити, що ми знайдемо символи для одного). Але ми нічого не можемо інтерполювати, тому було б добре лише читати, а не писати.

  • Оскільки немає закриваючої дужки, ми не можемо зробити лямбда-блок (наприклад {1 + $_}), який автоматично повертає значення останнього оператора.

  • Ми могли б використовувати зірочку для створення лямбда-виразу (наприклад 1+*), але тоді ми можемо взяти лише один аргумент, звернутися до цього аргументу лише один раз, і ще сильніше обмежитися в синтаксисі / операторах, які ми можемо використовувати.


Чудово зроблено, справді! :)
Дада

0

Луа, оцінка 31

1. Пробіг (31 з 74 балів)

AHILOQQQTTZeefmpxy=1.%4+(4.*9.)

3
Ви пропустили простір. variable =stuffна 1 байт довше.
devRicher


0

/// , Оцінка: 146

1. Бігай, Оцінка: 74

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ\\^`````````eefmpxy{||||~~~~~~~~~

6. Quine, Оцінка: 72

!!!!!#$$%&())))*+...1449:=@@@AHILOQQQTTZ^`````````eefmpxy{||||~~~~~~~~~

Так, коли в коді немає жодної нахили вперед або назад, він просто друкує себе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.