Переробка на Новий рік


23

Гарна резолюція до 2015 року - жити більш стійко. Почнемо з переробки. Код переробки, тобто!

Ваше завдання - надрукувати номер 2015 в STDOUT, з або без закінчення нового рядка (і тільки це). Тим НЕ менше, ви повинні зробити це, рециркуляцію деякого старого коду з PPCG. Ось як це працює:

  • Виберіть будь-яку відповідь розміщену на CodeGolf.SE до 2014-12-16 00: 00: 00Z (день, коли я опублікував це в пісочниці). Виняток: Ви не можете використовувати відповіді з минулорічного новорічного виклику .
  • Виберіть один блок коду з цієї відповіді (не вбудований фрагмент коду, він повинен бути власним абзацом). Цей блок повинен рекламуватися як фактичний код, наприклад, ви не можете використовувати тестові випадки чи приклад виводу, які трапляються при форматі моноспростору.
  • Перестановіть символи в цьому кодовому блоці, щоб сформувати свою заявку на це завдання. Ви можете лише змінити порядок, не додавати та не видаляти жодних символів. Сюди входять нові рядки.
  • Ви повинні мати можливість показати, що вихідний блок-синтаксис є синтаксично вашим мовою. У кращому випадку ви можете зробити це, показавши, що воно працює без помилок компіляції або часу виконання. Отже, хоча початковий код, можливо, був Java, ви можете використовувати його для відповіді Whitespace (оскільки кожен файл дійсний у Whitespace), але, ймовірно, не можна використовувати його для відповіді Python (оскільки оригінал не буде дійсним синтаксисом Python ).

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

Ваш отриманий код повинен бути повноцінною програмою (не функцією, ані фрагментом, який передбачає середовище REPL).

Це кодовий гольф, тому найкоротша відповідь (у байтах ) виграє.

Табло лідерів

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

Щоб переконатися, що ваша відповідь відображається, будь ласка, почніть свою відповідь із заголовка, використовуючи наступний шаблон Markdown:

# Language Name, N bytes

де Nрозмір вашого подання. Якщо ви покращите свій рахунок, ви можете зберегти старі бали у заголовку, прокресливши їх. Наприклад:

# Ruby, <s>104</s> <s>101</s> 96 bytes


Не кожна програма Whitespace діє; Я отримав помилку для ideone.com/Jphkf3
Ypnypn

Це питання мені просто прийшло в голову: чи дозволяється переробляти оригінальний код таким чином, щоб ви коментували величезну частину оригіналу?
ProgramFOX

@ProgramFOX так, тому що якщо вам доведеться багато коментувати, це, ймовірно, зашкодить вашій оцінці.
Мартін Ендер

@Ypnypn Це схоже на помилку виконання, але не синтаксичну помилку, правда?
Мартін Ендер

Відповіді:


22

GolfScript, 9 байт

Оригінальну відповідь (бабки!) Також в GolfScript, який , як я знаю , що це синтаксично правильним. Я тестував на http://golfscript.apphb.com/ .

2015}{.**

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


1
Так, ніколи не думав, що неперевершені брекети будуть дійсними в GS.
Мартін Ендер

3
@ MartinBüttner Ти цього ніколи не бачив ?
FryAmTheEggman

16

Befunge-93, 2085 байт

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

+2012+1+1e1 or b+bbv+b+NN
"a"""""
p((('?'.ord-' '.ord )/(1.0/'A'.ord)).to_i)
<<id
                   1
                   !
                   _"  fabaaaca"-.-.-.-.+"O"2::++p

aa
AaAAaAAaAAaAAaA
eEe ddd OoOOoOOoOOoOOoOOoOOoOOoOOoOOoO ddD Ccc eEE
ccc LLl
SssSss LLl
SsS LLl
SsSSsSSsSSsS LLl
cccccc
mMm



+   +     a     pppp  pppp  y   y     n   n eeeee +     +    y   y eeeee     a     rrr    "
+   +    a a    p   p p   p  y y      nn  n e      + + +      y y  e        a a    r  r   "
+++++   aaaaa   pppp  pppp    y       n n n eee    + + +       y   eee     aaaaa   rrr    "
+   +  a     a  p     p       y       n  nn e       + +        y   e      a     a  r  r
+   + a       a p     p       y       n   n eeeee   + +        y   eeeee a       a r  r   "



Hope to see another round of awesome programming puzzles and code golf challenges

===============================
"" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" " ' ' ' ' '

Big char dump below (will clean up if there's more languages to squeeze in):

  $$$$$$$()++++++++++++++++++++++++++++--------------------------/////:::;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<>>>>>??AAACCDDEEEFHHLLMMMMM
NOOOOOOOOOOORRRRRRRRRSSSUUUUV[\]___aaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbcccccccccccccddddddddddddddddddddddddddddddddddddddd
ddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeee
eeeeeeeeeeeeeeeeeeffffffffffghhhhhhiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiilll
llllllllllmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnnnnnnnnnnnnnnnnn
nnnnnnnnnnnnnoooooooooooooooooooooooooooooooooooooooooooooooooppppppppppppp
ppppppppppppprrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrsssssss
ssssssssssssssssssssssssstttttttttttttttttttttttttttttttttttttttttttttttttt
ttttttttttttttttttttttttttttttttttttttttttuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
uuuuuuuuuuuuvvvvvvvvwwxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyzz{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}

"""
one=1
print(int(ord('A')/(one/(ord(' ')-one))))
id
"mOO"

Це фактично також поліглот для 5 мов: Befunge-93 , oOo Code , Pyth , Python 3 та Ruby. Однак, оскільки оригінальний код є синтаксично справедливим для Befunge-93, я рахую лише це.

На жаль, оригінальний код мав лише одну пару [] та занадто багато .s, тому я не зміг насправді помістити Brainfuck (звідси код OOo).


Примітки

Це виявилося напрочуд обмежувальним, оскільки:

  • Повний набір цифр, доступних 001111111222, вимагає використанняord для Ruby і Python. Зокрема, немає 5, що виявило біль для Піта.
  • Відсутність цього @означалаp потрібно було використати для розміщення @Befunge.
  • Нестача * означала, що нам довелося помножуватись діленням на обернене число. Весело.

Befunge-93

Програма Befunge є

                   v
                   1
                   !
                   _"  fabaaaca"-.-.-.-.+"O"2::++p

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

oOo Кодекс

Відповідний BF є

>><->>->>>><>+++++[>++++++++++<-]>.--.+.++++.>>[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>->>>>>>>>>>>>>>>>>>>>>>->>>>>>>>>>>>>>>>>><;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>->>>]

, з яких є єдиною відповідною частиною

+++++[>++++++++++<-]>.--.+.++++.

Піт

Pyth виконує лише перший рядок, так

+2012+1+1e1 or b+bbv+b+NN

Зауважте, що Pyth використовує позначення префікса, тому перша частина рядка є насправді

2012 + (1 + (1 + (1 % 10)))

( Примітка: eозначає%10 )

Завдяки природі Pyth, це автоматично друкується. Решта рядка є дійсним Pyth, але попереднє місце перед тим, як oпридушити автоматичну друк.

Пітон 3

Більшість кодів Python коментується за допомогою рядків, особливо великої трійки з цитатами посередині. Ігноруючи кілька бродячих рядків, ми маємо:

+2012+1+1e1 or b+bbv+b+NN
"""
...
"""
one=1
print(int(ord('A')/(one/(ord(' ')-one))))
id

Перший і останній рядки синтаксично дійсні, але нічого не роблять. Середні два рядки друкують те, що нам потрібно.

Рубін

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

+2012+1+1e1 or b+bbv+b+NN
p((('?'.ord-' '.ord )/(1.0/'A'.ord)).to_i)
<<id
...
id

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


4
Хе, ви точно не отримуєте нагороду "за найкоротший код", але +1 для творчості!
Дверна ручка

11

CJam, 12 байт

T~mp[]!_1+oE^

Тема " Розшифрувати код" - це справді гарне джерело для друку випадкових чисел. Це було дуже весело, щоб зібрати разом :)

T~     bitwise not of 0 is -1                     [-1]
mp     replace with 0 as -1 is not prime          [0]
[]!    not of an empty array (falsy) is 1         [0, 1]
_      copy that 1                                [0, 1, 1]
1+     add 1                                      [0, 1, 2]
o      output top of stack                        [0, 1]           2
E      push 14                                    [0, 1, 14]       2
^      bitwise xor                                [0, 15]          2
       (CJam implicitly prints stack afterwards)  []               2015

Бонусні відповіді

14 байт:

36.e8 .79e2%15

19 байт:

0_*1_)@@{_%\_)*\};5

7

Страус, 198

Я схвильований, щоб отримати відповідь Страуса; Мені все одно, як це довго. : P (це , до речі, версія 0.5.0 )

{: rotate ( circ n -- )
    neg swap change-circular-start

IN: 1 9 [a,b] <circular> dup 6 rotate >array .
{ 4 5 6 7 8 9 1 2 3 }
IN: 1 9 [a,b] <circular> dup 3 rotate >array .
 7 8 9   3 4  6 };2 n15

Оригінал :

: rotate ( circ n -- )
    neg swap change-circular-start ;

IN: 1 9 [a,b] <circular> dup 6 rotate >array .
{ 4 5 6 7 8 9 1 2 3 }
IN: 1 9 [a,b] <circular> dup 3 rotate >array .
{ 7 8 9 1 2 3 4 5 6 }

Все, що я змінив:

  • Загорнути все, окрім 2 n15блоку ( {}), який негайно спливає ( ;).

  • Застрягли 2 n15в кінці. 2штовхає a 2, nштовхає a 0і 15штовхає 15, що в кінцевому підсумку стає 2015при виході.

Це фактично допомогло мені знайти помилку: 2n15вона не працює чомусь (вона друкує 215), але і те, 2 n15і 2n 15працює. Мені доведеться з’ясувати, чому це….

Ось пошуковий запит, який я використав для пошуку цього ідеального зразка коду:

створено: .. 2014-12-16 є: код відповіді: "2" код: "0" код: "1" код: "5" код: "]" код: ";"

Ця відповідь спрацювала б на 140, але я буду бачити, чи зможу я піти меншим….


7

JavaScript, 26 байт

Оригінал :

alert(998|(103>8>0&41>-0))

Перероблено:

alert(4030>>(998>1|8&1-0))

Він просто зміщує 4030 один біт праворуч.


5

CJam, 14 байт

Цей дещо складний, тому мені довелося розміщувати його, хоча його трохи довго. Оригінальна відповідь також є у CJam, тому її дійсна.

Оригінальна відповідь:

92e8.17 5e6.3%

Перероблено 2015 рік:

9.68e3 .7e2%15

Як це працює

9.68e3 is 9680
.7e2 is 70
9680 70% is 9680%70 = 20
15 is 15

Отже, стек містить 20і 15які друкуються одна за одною, друкуючи 2015 рік

Спробуйте його онлайн тут


5

Marbelous, 54 байти

Нудна відповідь (54 байти)

32303135
:R
:Q
++003333333567QQRR}0

(з подальшим тоном відключення нових рядків до рівних 54 байт)

Оригінальний відповідь

Основна дошка просто скидає мармур, що представляє кожного з персонажів 2015. Rі Qдошки визначені, але ніколи не використовуються.

Альтернативна відповідь (92 байти)

3W!!?0]]>W/\&0&1@1@0@0
      ]]>W/\&0&1@1@0@0
                @1  @0
03  02
\\  //
32+A
  Dp

Оригінальний відповідь

Потрібно перевіряти пробіли як порожні комірки. Це спочатку друкує 2(0x32), потім друкує 0x03+0x02+0x0A=0x0F=15у вигляді трицифрової десяткової (015 ). Перші три рядки нічого не роблять.

Тут можна перевірити відповіді.


4

Піт, 25

https://github.com/isaacg1/pyth

J6ifqT++2010/JJ4U*2^TJ^TT

Ось оригінальна відповідь (також написана в pyth). Я знаю, що це не дуже конкурентоспроможна відповідь (є відповідь пітона довжиною 26), але мені дуже сподобалося придумати це, і я думаю, що це виявляється досить гумористичною відповіддю.

Пояснення:

J6                           : J=6
  i                   ^TT    : convert_to_base(..., 10 BILLION)
   fqT          U*2^TJ       : filter(lambda T: T==..., range(2*10^6)
      ++2010/JJ4             : 2010 + J/J + 4

В основному це фільтрація списку перших двох мільйонів чисел для рівності 2015 р. Потім він розглядає цей список чисел як цифри базового 10-мільярдного числа. На щастя, у діапазоні є лише одне число, яке дорівнює 2015, тому ви отримуєте 2015 * 10000000000 ^ 0, що якраз у 2015 році. На це потрібно кілька секунд.




2

Математика, 60 байт

⌊DF@IM~RS~ad~ee~ee~ggggiiimmnnoorrrstt~.22346⌋Print@2015

Джерело

Частина в Floorдужках - це лише ряд застосувань функцій неіснуючих функцій (з якими у Mathematica не виникає проблем через символічну модель обчислення). Так само, просто написання настилу і Print@2015це множення, на що Mathematica також не скаржиться. Без синтаксичного цукру було б

Floor[ggggiiimmnnoorrrstt[ee[RS[DF[IM], ad], ee], 0.22346]] * Print[2015]

Оскільки ми не припускаємо середовища REPL, оцінений результат цього ніколи не друкується (що було б Null Floor[ggggiiimmnnoorrrstt[ee[RS[DF[IM], ad], ee], 0.22346]]), а лише побічний ефект Printнасправді переходить до STDOUT.

Завдяки Sp3000, що підключив джерело до цього.


2

> <>, 57 байт

Оригінальний код C ++ з виклику RadioASCII :

#include <cstdio>
int main(){int x;printf("Lawrencium");}

Перероблений > <> (Рибний) код:

eclne)nfn;
   ""#(();<>Laaccddiiiiiiimmnnnoprrsttttuuwx{}

Як і Befunge,> <> - це двоскладна мова на основі стека. Виконання починається зліва вгорі і спочатку праворуч. Виконується лише перший рядок програми таким чином:

e      Push 14                          [14]
c      Push 12                          [14, 12]
l      Push the length of the stack     [14, 12, 2]
n      Output as num                    [14, 12]          2
e      Push 14                          [14, 12, 14]      2
)      Push 1 if greater than else 0    [14, 0]           2
n      Output as num                    [14]              20
f      Push 15                          [14, 15]          20
n      Output as num                    [14]              2015
;      Terminate                        [14]              2015

Тепер велике питання - чому дійсний код C ++> <>? У> <> є способи змінити напрямок потоку програми (це все-таки 2D мова):

^>v<     Arrows which direct program flow a certain direction
_/|\     Mirrors which reflect the direction of program flow
#        Four-way mirror, reflect from all directions

Коли виконується код C ++, початковий #відображає потік програми вліво. Але> <> є тороїдальним, тому вказівник інструкції обертається навколо, з'являючись з кінця рядка, зустрічаючись з тим, >що знову спрямовує потік програми вправо. Потім вказівник загортається назад до #, відскакує назад до >..., і таким чином відбувається нескінченна петля, і помилка ніколи не кидається.


1

Пітон 3, 1878 байт

Дуже довго, але хотів поділитися все одно:

import sys,re,zlib as z,base64
print(2015)#,PIL.Image as ire.search(str(z.adler3(i.open(sys.argv[1]).tobytes()[2::6])%203)+'(\\D+',z.decompress(base64.b8decode(b'c${Tc%XZ>86NyfdNqBH<%b?iLI_EpFkwO-GfQC$tcfjoB$+h*^;0s?o$g*?uzgjxs%~BKif!C3zALZEU!&?wJd#-mqgS@p<P&+)AsV|c*52*C>U&(_4w^urvvWJU8Bj;bvv4ia;eiJLu+bsXLru`DjH|W<`|;xLq++kv5k8VWZgQe*`_u+opEF8>A6qjM%k#skzbiuJ7dL_*><K@9l6!M*H(|w)PZJ2`RYy7K2VVrv+zc)&2Fc?wvh|^#ksyymE?D!Q$3!LbFX%h%vT%1#lr486Iybw?0!`H)ZlZ#XIao2uXTr}(IBl@wRWHa#})bgV);O3HoW7+T*!5M3=^mu6Ri$`7L;uUWj~gsqR6gQR9h7^nKdBIgy>ats36%|M|8p1x;32(ZfK9R5_xK5ts=Sz70c%SIK&g3N1E|sg{n3>JSbKwwhssGcb$8uMNw=Nv;f_;rj?}kz(3-&#FQw@O;q(8nGHjbrTC(NQv=ckXT|eHr|amahCq(7T6<LBTr5Gj>fHV~3DcYINN!Qr`6Dl?jT>!4u5~bb%Zi6VTax;%vg*m325J_$nEC%yqbbYeEp!K_K7k)W-XCP`6+}N7tktMVX+{@c2L&kLAc&IvspGrzZ$F`uOBg}fA3W2neAU}tg~<+iCN=<sR^Zke+9WNhnCyy6!8nfa>33&OWiPt2s=OMTrUgilSYQxrG!gziB!Aj83zX&6S|yjIQkA?iF0n%?<+B=%_D11aoCv?@Q&eei{sqNkr7RG`#*xyzSUE6BUNnZK)3|3Wls}K$qaKv;jOO#!{3Ms)4CQ?shafnAF^zVq(`K9o2xL5JoQoGea+W1$+xmw&8OMOtN1Pid6UAcd+*_bB6IY$KjrO=ac^tPv3(8O`&(agOBbT{Va6s}Rm9&`I#yivC;MhW8=n+^^&Reho;~!~W<xgH6bVq3^=H7)sUXV2nv~DP4`CY`f55i&qH)DvPMQy>)y*Z=|68w@v=#oo5^RSh5R2F%1-vt>h=|+1n0pE^Yq-72!)1+o{hD_3<Cyxpyr6r%cei-AFQ*h1seM$MP>ovLS2k#Ci$to#do$s3MXu2lZsw~9HkbjVWM@1!{w>}LWVj#j2qC(+*Okc>=<qcV}*}+U_QK+(ZZ(x>ZMdDDWtgHiBK+7p6aHHI`u-h6z7|Xm`>D1t4uEp271y7oCI^{1^H~O7QRxTA_U&92Q8z$J2O|5Lbeg_0umd^pSU<%-ki7LtDvo&AgIt0h~6(y@Hr+kyLJ$<B#07KdGob0EW$7@f{GszaUv#tkpSyk759Khmvq-aiyM-_&x_VCTx$Vy<;$<k{T$-@{Mhc<<%KD1AHK^MKkg%pYIW}SxhV?&a{o9=rs@*+hqyoioE=TF>9S<KxY+^69^OA0jkS#0!w@kw4}KTcP9#+PVW+qB|7B`Y?eRs+7}8RSAs?i?-Cz#Wp(Iihd`nI!Q_i%R^o_;fvDQ5|{Cr;yWeirL>_l#(wn)$QenJkK6Sgw)5NleBzvo&G#@>X`7Ib*aS4LHx9epI%BXXV&y7LJ&54g}D25-Q8>DZQ5hGKyIeJkQQu08%j|<x~)q(AOVw9P~Z*c0Z@VM6n#<}tBT6+T%4mZ9f*y76xlEFM~o$xr9*SZHd^6D-C!pkkp3m(-~W3&>KY@106L+;I><MJ^Dz`f{(I3i?u`2pWjUjlwZx`B1JB#h#u3xTH*b1K?TG40|4lxF1$_Pw+t?h2')).decode()).group(1))

Взяте з відповіді KennyTM .

Я бачив, що 2, 0, 1 і 5 і # можна знайти в коді, тому я перемістив кілька символів, щоб зробити, print(2015)і я міг прокоментувати решту. Я також помістив імпорт PIL у коментар, щоб він не потребував цієї бібліотеки.


1

PHP, 21 байт

<?=65*4*31*2/8;//7**9

Спробуємо це ще раз. Отриманий з іншої відповіді PHP з розшифровки вихідного коду. Це досить просто, але поки що це найкоротша програма на мові, що не займається гольфом. Ви можете перевірити це на http://codepad.org/15EjIYAU . Оригінальний код такий:

<?=9*8*7*6*5*4/3/2/1;

Вам навіть не потрібен 4*2/8;)
Мартін Ендер

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