Печать по возрастанию ASCII, Грабители


13

Это нить грабителей. Нить полицейских идет сюда .

В потоке полицейских задачей было создать программу, которая выводит печатные символы ASCII в порядке возрастания. Задача грабителей состоит в том, чтобы расшифровать код, который полицейские использовали для создания этого вывода.

Взломанный код не обязательно должен быть одинаковым, если он имеет одинаковую длину и все обнаруженные символы находятся в правильных положениях. Язык также должен быть одинаковым (номера версий могут быть разными). Вывод, конечно, должен быть одинаковым. Копы не могут использовать комментарии в своем коде, но грабители могут их использовать.

Победителем потока грабителей станет пользователь, который взломал наибольшее количество заявок к 7 января 2016 года. Если есть связь, победит пользователь, взломавший заявки с самым длинным комбинированным кодом.

Представление должно быть отформатировано следующим образом:

Язык, nn символов (включая ссылку на ответ), имя пользователя полицейского

Код:

alphaprinter

Выход

abcdefghijklmnopqrstuvwxyz

Необязательное объяснение и комментарии.

Leaderboard:

Сокрушительная победа Аднана !

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
Подлые комментарии :)
wnnmaw

1
Это научит вас публиковать программу, выход которой короче, чем длина программы, на языке, который есть, printесли только вы не обнаружили символы именно в тех местах, где должна располагаться строка.
Quintopia

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"
Конор О'Брайен

@ CᴏɴᴏʀO'Bʀɪᴇɴ Думаю, мне нужно быть быстрым в этом. : D
insertusername здесь

1
Ну, спасибо тебе за твою самую быструю пушку на западе. +1
Конор О'Брайен


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
Пресвятая Богородица, не то, что я хотел, а хорошая работа, во всяком случае! Я разместил фактический код в моем ответе.
Конор О'Брайен




4

Python 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
insertusername здесь

1
@insertusernamehere Вы могли бы [...e+'']сделать это немного короче. Это отбросило меня с самого начала. ;)
user81655 26.12.15

Что на return[...e.toString()]самом деле делает? Я знаю только Lil JS ...
кошка

3
@cat Он просто помещает каждую букву сообщения об ошибке в массив. Это нужно сделать, потому что sortработает только с массивами, а не со строками.
user81655


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

Этот ответ недействителен и не должен засчитываться в мой счет (не то, что я в любом случае близок к победе), потому что я не видел, что он уже был взломан.

Python 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.