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
Stewie Griffin
źródło

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

Adnan
źródło
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.

Mitch Schwartz
źródło
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.

wstawić nazwę tutaj
źródło
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

Adnan
źródło
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 :)

Adnan
źródło
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

R, 60 bajtów, faks

Kod:

cat(c(0:9,LETTERS[1:8],LETTERS[20:26],letters[4:23]),sep="")

Wynik:

0123456789ABCDEFGHTUVWXYZdefghijklmnopqrstuvw
plannapus
źródło
4

Python 3, 58 bajtów, Mathias Ettinger

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

Podstawowe zastosowanie modułu ciągów .

Mitch Schwartz
źródło
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)
kwintopia
źródło
Wow! Niesamowita robota :)
Adnan
3

JavaScript, 83 znaki, BlockCoder1392

a=aaaaraaaa=uaaaa=aasaa=console;b=0;a.log("Hi~~~");auaaaaaaaAaaaaaaaa =aeaaaa="^~^"

Trochę za dużo znaków na tak krótki ciąg.

Martin Ender
źródło
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

użytkownik 81655
źródło
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

Pyth, 6 znaków, Adnan

Kod (z pustym kodem):

S`.n 3
S_____

Wynik

.0113345678888999

Wypróbuj online.

Posortowana jest reprezentacja φ. Można to zrobić w 5, jeśli usuniesz spację.

PurkkaKoodari
źródło
Awww, zapomniałem o backticks: str. Mój oryginalny kod toS+.n3"
Adnan
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 .

Adnan
źródło
2

Befunge, 11 znaków, histocrat

Kod:

89'**'z...@

Wynik:

1223788

To było zabawne. To alternatywne rozwiązanie znalazłem również:

8]..@#37.z'
MegaTom
źródło
Och, fajne rozwiązania funge-98.
histocrat
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).

kwintopia
źródło
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ć. :)

kot
źródło
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
PurkkaKoodari
źródło
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

Adnan
źródło