Mencetak ASCII yang naik, Perampok

13

Ini adalah utas perampok. Utas polisi ada di sini .

Di utas polisi, tugasnya adalah membuat program yang menampilkan karakter ASCII yang dapat dicetak dalam urutan menaik. Tugas perampok adalah menguraikan kode yang digunakan polisi untuk menghasilkan keluaran ini.

Kode yang retak tidak harus identik, asalkan memiliki panjang yang sama dan setiap karakter yang terungkap berada di posisi yang benar. Bahasanya juga harus sama (nomor versi bisa berbeda). Outputnya tentu saja harus identik. Polisi tidak dapat menggunakan komentar dalam kode mereka, tetapi perampok bebas untuk menggunakannya.

Pemenang utas perampok adalah pengguna yang telah memecahkan kiriman paling banyak pada 7 Januari 2016. Jika ada dasi, pengguna yang telah memecahkan kiriman dengan kode gabungan terpanjang akan menang.

Pengajuan harus diformat seperti ini:

Bahasa, nn karakter (termasuk tautan ke jawaban), nama pengguna Cop

Kode:

alphaprinter

Keluaran

abcdefghijklmnopqrstuvwxyz

Penjelasan dan komentar opsional.

Papan peringkat:

Kemenangan yang menghancurkan oleh Adnan !

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
sumber

Jawaban:

7

Python 2, 76 karakter, wnnmaw

Kode, dengan versi yang dikaburkan di bawah:

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

Ini output BKT]f. Bukan versi yang dituju, itu pasti haha.

Diuji di sini

Adnan
sumber
1
Komentar licik :)
wnnmaw
1
Itu akan mengajarkan Anda untuk memposting program yang outputnya lebih pendek dari panjang program dalam bahasa yang memiliki printkecuali Anda telah mengungkapkan karakter di tempat-tempat yang harus ditempati string.
kuintopia
7

Brainfuck, 48 byte, Adnan

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

Cukup mudah, menghasilkan 64 dan kemudian 26. Mungkin sedikit herring merah itu

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

adalah cara untuk mendapatkan 65, jadi Anda mungkin mencoba melakukan sesuatu seperti

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

sebelum menyadari bahwa itu jalan buntu.

Mitch Schwartz
sumber
Ahhh, bagus sekali :)
Adnan
6

CJam, 8 karakter, Martin Büttner

Kode (dengan kode kosong):

{`:)$}_~
__:_____

Keluaran:

%*;a|~

Cobalah online.

Aku punya perasaan tentang ini sejak aku melihatnya. Dan saya pikir saya tidak tahu CJam ...

PurkkaKoodari
sumber
4

JavaScript (ES6), 17 karakter, Neil

Saat OP memposting fungsi, berikut ini solusi menggunakan fungsi:

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

Fungsi anonim dapat dipanggil seperti:

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

Solusi yang lebih konyol yang saya miliki pada awalnya:

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

Saat dijalankan di konsol, itu akan mencetak nomor 11233.

masukkan nama pengguna di sini
sumber
2
Ninja kan aku. Saya mendapatfx=asdf=> "11233"
Conor O'Brien
@ CᴏɴᴏʀO'Bʀɪᴇɴ Kupikir, aku harus cepat dalam hal ini. : D
insertusernamehere
1
Nah, pujian untuk Anda pada senapan tercepat Anda di barat. +1
Conor O'Brien
-1 tanpa
syarat
1
Versi @CᴏɴᴏʀO'B seems tampaknya menjadi satu-satunya fungsi yang mengembalikan string.
Neil
4

PHP, 28 karakter, Niet the Dark Absol

Saya menemukan beberapa versi untuk tugas ini:

Versi asli:

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

Versi saya:

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

Versi 23 karakter:

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

Versi 26 karakter:

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

Tentu saja, Anda bisa menambahkan beberapa spasi putih untuk mendapatkan tanda 28 karakter.

Diuji di sini

Adnan
sumber
Dang, kau <?=join(range(a,z));
LegionMammal978
Anda membuat saya - mungkin saya seharusnya membuatnya lebih ketat dengan meletakkan salah satu huruf dari nama fungsi sebagai karakter yang terungkap ... Pokoknya, sebagai catatan, inilah aslinya:<?=@implode(range('a','z'));
Niet the Dark Absol
4

Jolf, 27 karakter, Cᴏɴᴏʀ O'Bʀɪᴇɴ

Setelah beberapa jam coba-coba, saya mengerti haha:

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

Termasuk kode yang dikaburkan:

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

Cobalah di sini ( langkah berjalan tampaknya menjadi satu-satunya yang bekerja dengan lansiran)


Penjelasan

Hal pertama yang saya lakukan adalah penempatan loop sementara. Saya sepertinya tidak mendapatkannya di tempat yang tepat haha. Setelah benar, hal kedua yang saya perhatikan adalah penempatan garis bawah. Saya pikir saya hampir mendapatkannya, sampai saya terjebak di garis bawah (gg Cᴏɴᴏʀ O'Bʀɪᴇɴ).

Berikut penjelasan lengkap kodenya:

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

Dalam pseudocode:

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

Saya tertarik untuk melihat apa solusi sebenarnya :)

Adnan
sumber
1
ibu suci Tuhan bukan apa yang saya maksudkan tetapi pekerjaan yang baik, bagaimanapun! Saya memposting kode aktual pada jawaban saya.
Conor O'Brien
4

R, 60 byte, Mesin Faks

Kode:

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

Keluaran:

0123456789ABCDEFGHTUVWXYZdefghijklmnopqrstuvw
plannapus
sumber
4

Python 3, 58 byte, Mathias Ettinger

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

Penggunaan dasar modul string .

Mitch Schwartz
sumber
Saya tidak melihat bahwa Anda telah memecahkan ini sebelum saya, saya mencoba menggunakan stringtetapi tidak berpikir untuk menggunakan sorted(karena saya lupa itu ada). Saya tidak tahu apakah saya harus membiarkan keretakan saya, karena itu tidak dekat dengan metode yang sama tetapi bekerja.
kucing
2
@cat Saya tidak tahu apa pendapat Stewie Griffin tentang hal itu, tapi bagaimanapun saya memberi Anda +1 dan berpikir masuk akal untuk menjaga jawaban Anda karena itu bukan jawaban yang sama dengan saya.
Mitch Schwartz
4

05AB1E, 13 karakter, Adnan

Kode (dan kode kosong):

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

Keluaran:

0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

Penjelasan:

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)
kuintopia
sumber
Woooww !! Pekerjaan luar biasa :)
Adnan
3

JavaScript, 83 karakter, BlockCoder1392

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

Terlalu banyak karakter untuk string pendek.

Martin Ender
sumber
3

JavaScript (ES6), 60 karakter, masukkan nama pengguna di sini

Kode:

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

Output (di Chrome):

    :ERacddeeeeeeffiinnnoorrrrst

Saya segera mengetahui hal ini karena saya akan melakukan hal yang sama! xD

pengguna81655
sumber
Bagus - karakter demi karakter. : D
insertusernamehere
1
@insertusernamehere Anda bisa melakukannya [...e+'']untuk membuatnya sedikit lebih pendek. Itu melempar saya dari awal. ;)
user81655
Apa yang return[...e.toString()]sebenarnya dilakukan? Saya hanya tahu JS lil ...
cat
3
@ kucing Ini hanya menempatkan setiap huruf dari pesan kesalahan ke dalam array. Perlu melakukan ini karena sorthanya berfungsi pada array, bukan string.
user81655
3

Pyth, 6 karakter, Adnan

Kode (dengan kode kosong):

S`.n 3
S_____

Keluaran

.0113345678888999

Cobalah online.

Ini representasi φ, disortir. Ini bisa dilakukan dalam 5, jika Anda menghapus ruang.

PurkkaKoodari
sumber
Awww, saya lupa tentang backticks: p. Kode asli saya adalahS+.n3"
Adnan
3

Malbolge, 254 karakter, frederick

Versi dikaburkan:

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

Versi saya:

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

Ini akan menampilkan:

`AB\cd`

Anda bisa mencobanya di sini .

Adnan
sumber
2

Di luar, 11 karakter, histokrat

Kode:

89'**'z...@

Keluaran:

1223788

Itu tadi menyenangkan. Ini adalah solusi alternatif yang juga saya temukan:

8]..@#37.z'
MegaTom
sumber
Oh, keren, solusi funge-98.
histokrat
2

05AB1E, 7 karakter Adnan

Kode dan kode kosong:

576T*uH
___T___

Keluaran:

22368

Penjelasan:

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

Saya hampir yakin ini bukan program asli, tetapi terima kasih kepada Adnan karena memberikan sedikit informasi yang memungkinkan ( uperintah).

kuintopia
sumber
Saya pikir ini adalah program asli haha. Bagus sekali :)
Adnan
2

Jawaban ini tidak valid dan tidak boleh dihitung sebagai skor saya (bukan berarti saya hampir menang) karena saya tidak melihat itu sudah retak.

Python 3, 58 karakter, Mathias Ettinger

Kode, dengan kode asli di bawah ini:

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

Jelas bukan solusi yang dimaksud, yaitu:

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

Keluaran:

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

(Perhatikan ruang utama.)

Yang asyik untuk dipecahkan: butuh beberapa saat untuk memikirkan cara agar bisa genexprbekerja dengan baik. :)

kucing
sumber
1

Pyth, 17 karakter, Luke

Kode (dengan kode kosong):

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

Keluaran:

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

Cobalah online.

Ini sangat menyenangkan. Saya mendapatkannya 18 byte beberapa kali menggunakan #sebagai operator filter, tapi kemudian saya tahu saya bisa membuangnya dari string. Jika Anda menghapus tdan #hasilnya mungkin akan menjadi kode Pyth terpendek untuk output itu.

Pada dasarnya:

  • "#X0231 membuat string #X0231
  • t"#X0231menghapus #:X0231
  • `t"#X0231 mendapatkan representasi string: 'X0231'
  • *T`t"#X0231kalikan dengan 10: 'X0231''X0231''X0231'...
  • u]G6*T`t"#X0231 membungkusnya dalam array 6 kali
  • `u]G6*T`t"#X0231mendapatkan representasi string: [[[[[['X0231'...'X0231']]]]]]
  • S`u]G6*T`t"#X0231 macam untuk mendapatkan output
PurkkaKoodari
sumber
Sangat bagus! Dan sangat berbeda dari apa yang telah saya lakukan.
Lukas
0

Perl 5, 30 karakter, msh210

Mengaburkan + versi saya:

print_________________________
print "9:;\@AFGHLMNRSTYZ_`a"  

Ini akan menampilkan:

9:;@AFGHLMNRSTYZ_`a

Diuji di sini

Adnan
sumber
0

Python 2, 62 karakter, RikerW

Versi dikaburkan:

______________________________________________________________
         | |   ||                  |  |  ||

Versi saya:

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

Ini hanya menghapus semua garis bawah dan keluaran abcde.

Sudah mencobanya di sini

Adnan
sumber