Drukowanie rosnąco ASCII, Rabusie


13

To wątek złodziei. Wątek gliniarzy idzie tutaj .

W wątku gliniarzy zadaniem było stworzenie programu, który wypisuje drukowalne znaki ASCII w porządku rosnącym. Zadaniem rabusiów jest rozszyfrowanie kodu, którego gliniarze użyli do wygenerowania tego wyniku.

Pęknięty kod nie musi być identyczny, o ile ma taką samą długość, a wszelkie ujawnione znaki znajdują się we właściwych pozycjach. Język musi być również ten sam (numery wersji mogą być różne). Dane wyjściowe muszą oczywiście być identyczne. Policjanci nie mogą używać komentarzy w kodzie, ale złodzieje mogą z nich korzystać.

Zwycięzcą wątku rabusiów zostanie użytkownik, który złamał najwięcej zgłoszeń do 7 stycznia 2016 r. W przypadku remisu wygra użytkownik, który złamał zgłoszenia o najdłuższym połączonym kodzie.

Zgłoszenie powinno być sformatowane w następujący sposób:

Język, znaki nn (w tym link do odpowiedzi), nazwa użytkownika Cop

Kod:

alphaprinter

Wynik

abcdefghijklmnopqrstuvwxyz

Opcjonalne wyjaśnienia i komentarze.

Tabela liderów:

Miażdżące zwycięstwo Adnana !

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

Odpowiedzi:


7

Python 2, 76 znaków, wnnmaw

Kod, z zaciemnioną wersją poniżej:

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

To wychodzi BKT]f. Nie jest to wersja zamierzona, to na pewno haha.

Testowane tutaj


1
Podstępne komentarze :)
wnnmaw

1
Dzięki temu nauczysz się zamieszczać program, którego wynik jest krótszy niż długość programu, w języku, który ma, printchyba że ujawniłeś znaki dokładnie w miejscach, w których ciąg musiałby siedzieć.
kwintopia

7

Brainfuck, 48 bajtów, Adnan

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

Całkiem proste, generując 64, a następnie 26. To może być mały czerwony śledź

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

to sposób na uzyskanie 65 lat, więc możesz spróbować zrobić coś takiego

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

zanim zauważy, że to ślepy zaułek.


Achhh, dobra robota :)
Adnan




4

JavaScript (ES6), 17 znaków, Neil

Gdy OP opublikował funkcję, oto rozwiązanie wykorzystujące funkcję:

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

Funkcję anonimową można wywołać w następujący sposób:

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

Bardziej śmieszne rozwiązanie, które miałem na początku:

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

Po uruchomieniu w konsoli wydrukuje numer 11233.


2
Ninja mnie. Mamfx=asdf=> "11233"
Conor O'Brien,

@ CᴏɴᴏʀO'Bʀɪᴇɴ Myślałem, że muszę być szybki w tej sprawie. : D
insertsersernamehere

1
Uznanie dla twojej najszybszej broni na zachodzie. +1
Conor O'Brien

-1 bez żadnych ciągów: P
ev3commander

1
@ Wersja CᴏɴᴏʀO'Bʀɪᴇɴ wydaje się być jedyną, która zwraca funkcję łańcucha.
Neil,

4

PHP, 28 znaków, Niet the Dark Absol

Znalazłem kilka wersji tego zadania:

Orginalna wersja:

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

Moja wersja:

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

Wersja 23-znakowa:

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

Wersja 26 znaków:

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

Oczywiście możesz dodać kilka białych znaków, aby uzyskać znak 28 znaków.

Testowane tutaj


Dang, pokonałeś mnie: P Najkrótszy, co mogę zrobić:<?=join(range(a,z));
LegionMammal978

Masz mnie - może powinienem był to uczynić bardziej restrykcyjnym poprzez umieszczenie jednej z liter nazwy funkcji jako ujawnionych znaków ... W każdym razie, dla przypomnienia, oto oryginał:<?=@implode(range('a','z'));
Niet the Dark Absol

4

Jolf, 27 znaków, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Po kilku godzinach prób i błędów dostałem haha:

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

W tym zaciemniony kod:

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

Wypróbuj tutaj ( bieg krokowy wydaje się być jedynym działającym z alertem)


Wyjaśnienie

Najpierw utknąłem na miejscu pętli while. Nie wydaje mi się, żeby trafił we właściwe miejsce, haha. Po prawidłowym wykonaniu, drugą rzeczą, którą zauważyłem, było umieszczenie podkreślenia. Myślałem, że prawie go dostałem, dopóki nie utknąłem na podkreśleniu (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Oto pełne wyjaśnienie kodu:

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

W pseudokodzie:

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

Chcę zobaczyć, jakie było rzeczywiste rozwiązanie :)


1
Święta Matko Boża, nie to, co zamierzałem, ale dobra robota, tak czy inaczej! W odpowiedzi umieściłem właściwy kod.
Conor O'Brien




4

Python 3, 58 bajtów, Mathias Ettinger

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

Podstawowe zastosowanie modułu ciągów .


Nie widziałem, że mi to złamałeś, próbowałem użyć, stringale nie pomyślałem o użyciu sorted(bo zapomniałem, że istnieje). Nie wiem, czy powinienem zostawić swój crack, ponieważ nie jest on w pobliżu tej samej metody, ale działa.
kot

2
@cat Nie wiem, jaka byłaby opinia Stewie Griffin, ale w każdym razie dałem ci +1 i myślę, że sensownie jest podtrzymywać twoją odpowiedź, ponieważ nie jest to ta sama odpowiedź, co moja.
Mitch Schwartz

4

05AB1E, 13 znaków, Adnan

Kod (i pusty kod):

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

Wynik:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Wyjaśnienie:

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)

Wow! Niesamowita robota :)
Adnan


3

JavaScript (ES6), 60 znaków, nazwa insertusertutaj

Kod:

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

Wyjście (w Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

Wiedziałem o tym od razu, bo miałem zrobić to samo! xD


Miły jeden - znak po znaku. : D
inserttusernamehere

1
@insertusernamehere Mógłbyś zrobić, [...e+'']aby było trochę krótsze. To mnie odrzuciło na początku. ;)
user81655,

Co return[...e.toString()]właściwie robi? Znam tylko lil JS ...
kot

3
@cat Po prostu umieszcza każdą literę komunikatu o błędzie w tablicy. Musi to zrobić, ponieważ sortdziała tylko na tablicach, a nie na ciągach.
user81655,


3

Malbolge, 254 znaki, Frederick

Wersja zaciemniona:

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

Moja wersja:

('&%: ^"!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

Spowoduje to:

`AB\cd`

Możesz spróbować tutaj .



2

05AB1E, 7 znaków Adnan

Kod i pusty kod:

576T*uH
___T___

Wynik:

22368

Wyjaśnienie:

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

Prawie jestem przekonany, że to nie był oryginalny program, ale dzięki Adnanowi za dostarczenie jednego kawałka informacji, który umożliwił ( upolecenie).


Myślę, że to był oryginalny program haha. Dobra robota :)
Adnan

2

Ta odpowiedź jest nieprawidłowa i nie powinna się liczyć do mojego wyniku (nie dlatego, że i tak prawie wygrywam), ponieważ nie widziałam, że została już złamana.

Python 3, 58 znaków, Mathias Ettinger

Kod, z oryginalnym kodem poniżej:

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

Wyraźnie nie było to zamierzone rozwiązanie, którym było:

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

Wynik:

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

(Zwróć uwagę na wiodące miejsce).

Zabawny do zgryzienia: zajęło mi trochę czasu, aby wymyślić, jak genexprprawidłowo działać. :)


1

Pyth, 17 znaków, Luke

Kod (z pustym kodem):

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

Wynik:

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

Wypróbuj online.

To było fajne. Wielokrotnie podniosłem go do 18 bajtów, używając #jako operatora filtru, ale potem zorientowałem się, że mogę go po prostu odrzucić z łańcucha. Jeśli usuniesz ti #wynik będzie prawdopodobnie najkrótszym kodem Pyth dla tego wyniku.

Gruntownie:

  • "#X0231 tworzy ciąg #X0231
  • t"#X0231usuwa #:X0231
  • `t"#X0231 pobiera reprezentację ciągu: 'X0231'
  • *T`t"#X0231mnoży to przez 10: 'X0231''X0231''X0231'
  • u]G6*T`t"#X0231 owija go w tablicę 6 razy
  • `u]G6*T`t"#X0231pobiera reprezentację ciągu: [[[[[['X0231''X0231']]]]]]
  • S`u]G6*T`t"#X0231 sortuje je, aby uzyskać wynik

Bardzo dobrze! I całkiem inaczej niż to, co zrobiłem.
Łukasz



0

Python 2, 62 znaki, RikerW

Wersja zaciemniona:

______________________________________________________________
         | |   ||                  |  |  ||

Moja wersja:

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

To po prostu usuwa wszystkie podkreślenia i wyniki abcde.

Próbowałem tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.