Друк висхідний ASCII, Грабіжники


13

Це нитка розбійників. Сюди йде нитка копів .

У потоці копів завданням було створити програму, яка виводить символи ASCII для друку у порядку зростання. Завдання грабіжників полягає в тому, щоб розшифрувати код копів, які використовуються для отримання цього результату.

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

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

Подання має бути відформатоване так:

Мова, nn символів (включаючи посилання на відповідь), ім'я користувача Cop

Код:

alphaprinter

Вихідні дані

abcdefghijklmnopqrstuvwxyz

Необов’язкове пояснення та коментарі.

Табло:

Розгромна перемога Аднана !

Adnan: 7
Pietu1998: 3
Mitch Schwartz: 2
Quintopia: 2
Martin Büttner: 2
cat: 1
Dennis: 1
insertusernamehere: 1
isaacg: 1
jimmy23013: 1
MegaTom: 1
plannapus: 1
user81655: 1

Відповіді:


7

Python 2, 76 символів, wnnmaw

Код із прихованою версією нижче:

print "BKT]f"#__h______________________v_____________,___)_________)_______)
print __________h______________________v_____________,___)_________)_______)

Це виводить BKT]f. Не призначена версія, це точно.

Тестували тут



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

7

Brainfuck, 48 байт, Аднан

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

Досить прямо, генеруючи 64, а потім 26. Це може бути маленька червона оселедець

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

це спосіб отримати 65, тож ви можете спробувати зробити щось подібне

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

перш ніж помітити, що це глухий кут.


Ааа, молодець :)
Аднан




4

JavaScript (ES6), 17 символів, Ніл

Як ОП розмістив функцію, ось рішення з використанням функції:

()=>xxx=11000+233
__=____=_________

Анонімну функцію можна викликати так:

(()=>xxx=11000+233)();

Більш смішне рішення, яке я мав спочатку:

xx=yyyy=z=11230+3
__=____=_________

Під час запуску в консолі вона надрукує номер 11233.


2
Ніндзя мене. Я отримавfx=asdf=> "11233"
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ Думав, що мені довелося бути швидким на цьому. : D
вставитикористувач туди

1
Ну, кудо вам на найшвидшому пістолеті на заході. +1
Conor O'Brien

-1 для жодних рядків: P
ev3commander

1
Версія @ CᴏɴᴏʀO'Bʀɪᴇɴ, здається, є єдиною функцією, яка повертає рядок.
Ніл

4

PHP, 28 символів, Niet The Dark Absol

Я знайшов кілька версій для цього завдання:

Оригінальна версія:

<?=@implode(range('a','z'));

Моя версія:

<?=join('',range('a', 'z'));

Версія з 23 символами:

<?=join('',range(a,z));

26 символів:

<?=implode('',range(a,z));

Звичайно, ви можете просто додати кілька пробілів, щоб дістатися до позначки 28 символів.

Тестували тут


Данг, ти побив мене: P Найкоротший, що я можу зробити:<?=join(range(a,z));
LegionMammal978

Ви мене зрозуміли - можливо, я мав би зробити це більш обмежуючим, поставивши одну з літер імені функції як розкритих символів ... У всякому разі, для запису ось оригінал:<?=@implode(range('a','z'));
Niet The Dark Absol

4

Джолф, 27 персонажів, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Після декількох годин спроб і помилок я зрозумів, ха-ха:

on-pl'u'Wa-n"vwxyz"`--'01_2

У тому числі прихований код:

on-pl'u'Wa-n"vwxyz"`--'01_2
________W___________--_____
                         |

Спробуйте тут ( кроковий запуск, здається, єдиний, хто працює з попередженням)


Пояснення

Перше, на чому я застряг - це розміщення циклу while. Я, здається, не потрапив у потрібне місце ха-ха. Після того, як я це зрозумів, друге, що я помітив, - це підкреслення. Я думав, що я майже отримав це, поки не застряг у підкресленні (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Ось повне пояснення коду:

on-pl'u'Wa-n"vwxyz"`--'01_2

o                           # assign
 n                          # n / standard variable
   pl                       # pl = "abcdefghijklmnopqrstuvwxyz"
  -  'u                     # pl - "u" = "abcdefghijklmnopqrstvwxyz"
       'W                   # a string in the middle doing nothing
          -n"vwxyz"         # n - "vwxyz"
         a                  # alert(
                   `        # is an extra semicolon
                     -'01   # "0" - 1
                    -    _2 # ("0" - 1) - negative 2

У псевдокоді:

n = minus("abcdefghijklmnopqrstuvwxyz", "u");
"W";
alert(minus(n,"vwxyz"));
;
minus(minus("0", 1), negative(2));

Мені цікаво подивитися, яким було власне рішення :)


1
Свята мати Божа, не те, що я мав намір ______o, але приємна робота, як би там не було! Я розмістив фактичний код на свою відповідь.
Conor O'Brien




4

Пітон 3, 58 байт, Матіас Еттінгер

import string;print(''.join(sorted(string.printable))[5:])

Основне використання рядкового модуля.


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

2
@cat Я не знаю, що з цим буде думка Стіві Гріффін, але все одно я дав вам +1 і вважаю, що має сенс продовжувати свою відповідь, оскільки це не та сама відповідь, як моя.
Мітч Шварц

4

05AB1E, 13 символів, Аднан

Код (і незабезпечений код):

1TD*<F3<*}bRJ
__D____<_____

Вихід:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Пояснення:

1                       Push 1
 TD*<                   Push 99
     F   }              For loop
      3<*               multiply top of stack by 3-1 (e.g. double it)
          b             convert to list of binary digits (note we have just computed 2^99)
           R            reverse it
            J           join it into a string.
                        (top of stack implicitly printed)

Woooww !! Дивовижна робота :)
Аднан


3

JavaScript (ES6), 60 символів, вставитикористувач

Код:

e=e=>{try{a}catch(e){return[...e.toString()].sort().join``}}
e_e_______a__a____e___e________e__o___________o______o______

Вихід (у Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

Я це зрозумів одразу, бо збирався зробити те саме! xD


Гарний - характер за характером. : D
вставитикористувач туди

1
@insertusernameтук Ви могли б [...e+'']зробити це трохи коротше. Це відкинуло мене на старті. ;)
користувач81655

Що return[...e.toString()]насправді робить? Я знаю лише lil JS ...
кіт

3
@cat Він просто поміщає кожну букву повідомлення про помилку в масив. Це потрібно робити, тому що sortпрацює лише на масивах, а не на рядках.
користувач81655


3

Мальбодж, 254 символи, фредерік

Неясна версія:

_____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ __

Моя версія:

('&%: ^"!65 4Xzyx w4-Qs rpo'K mlk"' ~Dfdc ba}v< ::8[Z XnVlq }0/mO ,*MbK JH^6# 4`C|0 ?U=Sw uPsaq L4on2 Mjjh, ged)c '<$$p ]!};Y WiVxS eRQ>= ).K]l Ij"Fh gfedc b,=;z L\q%H X3E2C /ng-k N*KJI 8%6#D ~2^Ai >g<<d tUr`6 oJ"!1 /|{CU f)d>b <A_^! \};Yj yUxTS dtsr` ML

Це виведе:

`AB\cd`

Ви можете спробувати тут .



2

05AB1E, 7 символів Аднана

Код і незаповнений код:

576T*uH
___T___

Вихід:

22368

Пояснення:

576       Push this number.
   T      Push ten.
    *     Multiply. (5760)
     u    Convert to string.
      H   Interpret as a hex number and push decimal (22368) (implicit output).

Я майже впевнений, що це не оригінальна програма, але дякую Аднану за те, що він надав єдиний біт інформації, який зробив це можливим ( uкоманда).


Я думаю, це була оригінальна програма ха-ха. Молодці :)
Аднан

2

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

Пітон 3, 58 символів, Матіас Еттінгер

Код, оригінальний код нижче:

x=range(95);  print(''.join((chr(i+32) for i in x  )    ))
______________print(_______(_______________________)_____)

Ясна річ не задумане рішення, яке було:

import string;print(''.join(sorted(string.printable))[5:])

Вихід:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

(Зверніть увагу на провідний пробіл.)

Веселий тріщину: мені знадобилося деякий час, щоб зрозуміти, як змусити genexprроботу працювати належним чином. :)


1

Піф, 17 символів, Лука

Код (з пропущеним кодом):

S`u]G6*T`t"#X0231
___________#____1

Вихід:

""''''''''''''''''''''0000000000111111111122222222223333333333XXXXXXXXXX[[[[[[]]]]]]

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

Це було весело. Я отримав його до 18 байт кілька разів, використовуючи #як оператор фільтра, але потім зрозумів, що можу просто відкинути його від рядка. Якщо ви видалите, tі #результат, ймовірно, буде найкоротшим кодом Pyth для цього виводу.

В основному:

  • "#X0231 робить рядок #X0231
  • t"#X0231видаляє #:X0231
  • `t"#X0231 отримує рядкове представлення: 'X0231'
  • *T`t"#X0231помножимо його на 10: 'X0231''X0231''X0231'
  • u]G6*T`t"#X0231 загортає його в масив 6 разів
  • `u]G6*T`t"#X0231отримує рядкове представлення: [[[[[['X0231''X0231']]]]]]
  • S`u]G6*T`t"#X0231 сортує його, щоб отримати вихід

Дуже хороша! І сильно відрізняється від того, що я робив.
Лука



0

Python 2, 62 символи, RikerW

Неясна версія:

______________________________________________________________
         | |   ||                  |  |  ||

Моя версія:

print "ab_c_de___".replace("_","")#___________________________

Це просто видаляє всі підкреслення та результати abcde.

Спробував це тут

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