Cetak tabel ASCII

28

Tugasnya adalah untuk menampilkan n karakter tabel ASCII .

Anda dapat menulis fungsi (atau program yang menggunakan argumen sebagai parameter, STDIN juga diizinkan) yang menggunakan parameter n , yang akan menjadi indeks karakter terakhir untuk dicetak.

Tugasnya cukup sederhana, jadi sebagai contoh berikut ini kemungkinan implementasi dengan Python 2.7:

(lambda n:map(chr, range(n)))(256)

Seperti yang saya katakan itu tugas sederhana. Jadi ini kode-golf dan kode terpendek menang!

EDIT

Seperti beberapa dari Anda menunjukkan kode ini tidak mencetak hasilnya. Ini hanya contoh karena saya mungkin kesulitan menjelaskan masalah dalam bahasa Inggris ;-).

EDIT2

Jangan ragu untuk mengirim jawaban dalam bahasa pemrograman apa pun, bahkan jika itu bukan kode terpendek. Mungkin ada beberapa implementasi menarik di luar sana!

EDIT3

Memperbaiki contoh sehingga mencetak hasilnya.

oopbase
sumber
1. Apakah harus berfungsi? 2. Menurut kode referensi Anda, n akan menjadi karakter pertama yang tidak dicetak.
Dennis
2
Sebenarnya kode referensi tidak mencetak apa pun. Ini hanya mengembalikan daftar karakter dan memungkinkan REPL melakukan apa pun yang diinginkan dengan hasilnya.
manatwork
1
Bisakah seseorang menjelaskan downvote? Saya minta maaf jika bahasa Inggris saya kurang bagus. Jika ada sesuatu yang tidak jelas dalam pertanyaan, tolong beri tahu saya.
oopbase
1
for x in range(input()):print chr(x)Sebenarnya akan mencetak karakter, jika Anda ingin mengedit contoh Anda.
FryAmTheEggman
2
nota [i for i in range(n)]sangat mirip denganrange(n)
njzk2

Jawaban:

19

CJam, 4 byte

ric,

Program lengkap yang bertuliskan STDIN (bidang input pada penerjemah online ).

Ini hanya dijalankan range(chr(int(input()))), mengambil keuntungan dari fakta yang ,memberikan pengembalian array karakter jika argumennya adalah karakter.

Saya sebut dibs on c,(2 byte), kalau-kalau asumsi input sudah di stack ternyata diizinkan.

Dennis
sumber
Apakah Anda harus menentukan beberapa input? Pelari online hanya mengeluarkan kode itu sendiri.
manatwork
12
@Manatwork: Tunggu sebentar. Anda harus bergegas ketika memposting ini ...;)
Dennis
Saya sedikit bingung dengan ini. Karakter pada 0 (alias 0c) mencegah hal lain dicetak setelah itu. ric, (sepertinya berfungsi dengan baik. Ini artinya kodenya tidak berfungsi.
kaine
1
@kaine: Internet Explorer ditulis dalam C ++, yang tidak menggunakan string yang diakhiri dengan null. Menurut ini , karakter nol adalah kesalahan parse di HTML 5; browser harus menggantinya dengan atau membatalkan pemrosesan dokumen.
Dennis
4
Ingatlah bahwa Anda harus memasukkan yang cukup besar n, karena beberapa lusin karakter ASCII pertama adalah karakter yang tidak dapat dicetak. Fakta menyenangkan: program ini juga menampilkan tabel Unicode, misalnya n = 9999
Sanchises
25

brainfuck - 169 146 142 byte

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

Keterbatasan:

  • EOF harus 0
  • Membutuhkan sel pembungkus 8-bit
  • Karena ^, mod input oleh 256

Bukan jawaban terpendek di sini, tapi hei, brainfuck! Ini akan menjadi tantangan brainfuck yang benar-benar bagus, kecuali kenyataan bahwa itu membutuhkan input yang dapat dibaca manusia tanpa menjamin jumlah digit. Saya bisa meminta masukan untuk memiliki angka nol di depan untuk membuatnya menjadi 3 karakter, tetapi apa yang menyenangkan itu? : D Salah satu masalah utama dengan mengambil input dengan cara ini adalah bahwa hanya percabangan atau perulangan struktur brainfuck yang memeriksa apakah sel saat ini nol atau tidak. Ketika input dapat berisi angka nol, itu dapat menyebabkan kode Anda mengambil cabang yang seharusnya tidak diambil. Untuk mengatasi masalah ini, saya menyimpan setiap digit input ditambah 1 , kemudian kurangi kelebihannya di detik terakhir yang mungkin. Dengan begitu, saya selalu tahu di mana nol saya berada.

Saya memang mengatakan bahwa ini akan menjadi tantangan brainfuck yang hebat tanpa harus mengurai input. Mengapa demikian? Baiklah, mari kita berpura-pura bahwa kita tidak mengambil input numerik. Kami akan mengatakan tantangannya adalah "Diberikan byte input, output semua karakter ASCII di bawah byte itu". Inilah jawaban saya:


brainfuck - 8 byte

,[->.+<]

Ini perbedaan! Program sebenarnya menggunakan 135 instruksi untuk mengumpulkan input (lebih dari 95% dari program!), Hanya karena itu adalah manusia yang mengetiknya. Menyimpan nomor sebagai byte dan memberikan yang bagi saya, dan hanya dibutuhkan satu.

(Fakta menyenangkan: Jika Anda memahami program hipotetis, maka selamat! Anda memahami brainfuck secara keseluruhan. Seluruh bahasa hanya memiliki delapan perintah, dan program itu kebetulan menggunakan masing-masing tepat satu kali.)

Penjelasan

-[+>+[+<]>+]>+               abuse 8 bit wrapping to put 47 in cell 4

>>,[>,]                      starting in cell 6; get each character of input

<[<]<[->>[->]<[<]<]          subtract the value of cell 4 from each input character
                             '0' has an ascii value of 47 so subtracting 47 from each
                             digit gives you that digit's value plus 1

>>>[                         if the number is in more than one cell
                             (when the program first starts this means "if the input has
                             more than one digit")

[<[-<+<+<+>>>]               copy first input cell to 3 new cells

+++++++++[<[-<+>]<<          do some fancy addition magic to multiply that value by 10
[-<+>>>+<<]<[->+<]>>>>-]]

<,<<,>                       clean up a bit (abusing comma to set cells to 0)

[->>>+<<<]>>>                add the value to the next cell of input

----------                   because we multiplied (the digit plus 1) by 10; the answer
                             is 10 too high; so subtract 10

>]                           if the input is still in multiple cells; do the song and
                             dance again (multiply by 10; add to next cell; subtract 10)

<-                           we never got a chance to fix the final digit; so it's still 1
                             too high

               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
               ;;         we have now finished processing input         ;;
               ;;     the tape is empty except for the current cell     ;;
               ;;  the current cell contains the number that was input  ;;
               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[                            while the cell containing input != 0

-                            subtract 1 from it

>.+                          go a cell to the right; output that cell; then add 1

<]                           repeat
monmon bawah tanah
sumber
Bagus! Pasti memberi +1 untuk upaya ini :-)
oopbase
1
Anda bisa menyimpan beberapa byte pada bagian keluaran: >[-]<[->.+<]Setel sel di sebelah sel saat ini ke 0, lalu hitung mundur sel saat ini sambil meningkatkan sel di sebelahnya dan secara bersamaan mencetak nilainya.
Shujal
@ Yuu Itu poin yang sangat bagus! Saya tidak memikirkan itu sama sekali. Selain lebih pendek, itu memperbaiki masalah yang saya miliki dengan tersedak input besar dan mungkin lebih cepat! Terima kasih :)
undergroundmonorail
Ya, jauh lebih cepat sekarang. Saya juga tidak memerlukan >[-]<bagian karena saya sudah di sebelah sel kosong. :)
undergroundmonorail
1
Juga, jawaban kedua Anda valid.
Buah Esolanging
12

Pyth , 4 byte

VQCN

Pada dasarnya terjemahan program Python 3:

for N in range(eval(input())):print(chr(N))
FryAmTheEggman
sumber
11

Befunge 93 - 23 21

&> :#v_,>:#,_@
 ^-1:<

Befunge 93 - 15 13 (oleh Ingo Bürk)

Yang ini mencetak daftar secara terbalik, tetapi OP hanya mengatakan kita perlu mencetak nkarakter pertama , bukan harus berurutan.

&>::>v
@^-1,_

Mungkin tidak bisa golf lebih jauh tanpa beralih ke Befunge98 (untuk operator ";", lihat jawaban @ Kasran )

Coba di sini:

karhell
sumber
Saya harap Anda tidak keberatan bahwa saya menggunakan juru bahasa inline dari sini :)
Ingo Bürk
Pertanyaannya tidak menyatakan bahwa kita harus mencetaknya dalam urutan apa pun, jadi ini lima byte lebih pendek: &> #- #1:# :#,_@(hanya mencetaknya secara terbalik)
Ingo Bürk
Saya mencukur byte lain dengan total 15. Karena baris baru saya akan mengeditnya ke dalam posting Anda.
Ingo Bürk
Bermain bagus di golf tambahan :) Adapun juru bahasa inline, saya tidak tahu ada satu. Ini luar biasa, terima kasih :)
karhell
Penerjemah baru dari tantangan terkait. Saya hanya berpikir saya akan benar-benar menggunakannya ketika saya melihat jawaban Anda. :)
Ingo Bürk
8

Java, 151 128 77 62 56 byte

Pertama-tama coba kode-golf.

void f(int n){for(char i=0;++i<=n;System.out.print(i));}

Pemakaian:

import java.util.Scanner;
class A {

    public static void main(String[] a) {
        int num = new Scanner(System.in).nextInt();
        new A().f(num);
    }

    void f(int n) {
        for (char i = 0; ++i <= n; System.out.print(i));
    }
}

Terima kasih kepada @Shujal, @flawr, @Ingo Bürk dan @Loovjo untuk pengurangan byte yang serius.

Rodolfo Dias
sumber
1
Anda dapat menyimpan beberapa karakter dengan mendeklarasikan int saat membuka pemindai: int i,n=new Scanner(...dan mengubah loop menjadi for(;++i<n;). Juga, Anda tidak perlu meminta Character.toString. Anda bisa memberi makan System.out nilai char dan itu akan dengan senang hati mengeluarkannya.
Shujal
1
Tantangannya memungkinkan penggunaan ainput Anda. Dan saya pikir Anda dapat mempersingkat forloop dengan menyalahgunakan tempat kenaikan sebagai loop body: for(;++i<n;System.out.print((char)i));(tapi Anda mungkin harus mengubah inisialisasi atau nilai akhir dengan + - 1)
flawr
1
Anda diperbolehkan menulis fungsi, jadi tidak perlu untuk seluruh kelas dan semuanya.
Ingo Bürk
1
@RodolfoDias Anda yakin? Jelas, ++i<n+1harus sama dengan ++i<=n. Perhatikan =di sana! Itu hanya menghemat satu byte. Ini bekerja untuk saya.
Ingo Bürk
1
Jadi kita turun ke void f(int n){int i=0;for(;++i<=n;System.out.print((char)i));}yang 62 byte. Setidaknya saya tidak melihat lebih banyak ke golf sekarang. :)
Ingo Bürk
6

APL, 5

⎕UCS⍳

Contoh penggunaan:

⎕UCS⍳256
Shujal
sumber
1
Anda tidak perlu membuat dfn. Hanya ⎕UCS⍳ akan bekerja dengan baik. Jadi 5 karakter
Moris Zucca
1
Anda tidak harus mendukung poin kode lebih dari 127. Hanya ↑ ⎕AV akan berfungsi dengan baik. Jadi 4 karakter
Adám
6

JavaScript, ES6 - 52 58 56 53 44 42 byte

n=>String.fromCharCode(...Array(n).keys())

Rekatkan ini ke konsol Firefox. Jalankan sebagai f(NUM).

Harus membuatnya lebih lama karena yang pertama tidak menerima input dengan benar.

Turun 3, terima kasih edc65! Turun ke 44 berkat Swivel!

Scimonster
sumber
1
Ini tidak benar-benar menangani parameter maupun input.
manatwork
Ubah saja 70 ke nomor yang berbeda; itulah inputnya.
Scimonster
Oke, saya perbarui untuk mengambil input, dengan biaya 6 byte.
Scimonster
3
-2: f = n => [... Array (n)]. Map ((v, i) => String.fromCharCode (i))
edc65
2
44 Karakter! f=n=>String.fromCharCode(...Array(n).keys())
Putar
6

Haskell, 17 23 byte

flip take['\0'..]

Tidak yakin apakah mungkin untuk melakukan yang lebih baik tanpa impor.

Edit

Solusi pertama saya sebenarnya tidak mencetak hasilnya, jadi ijinkan 6 karakter lagi untuk itu:

print.flip take['\0'..]

Juga, tidak lebih pendek (25 karakter dengan pencetakan, 19 tanpa), tetapi pendekatan alternatif yang menarik (meskipun membutuhkan 'Data.List'):

print.((inits['\0'..])!!)
archaephyrryx
sumber
Ini sebenarnya tidak mencetak hasilnya.
nyuszika7h
@ nyuszika7h sekarang ya
John Dvorak
(`take`['\0'..])menghemat satu byte.
Laikoni
4

Utilitas umum Bash + BSD, 9 byte

jot -c $1

GNU dc, 20 byte

?sc_1[1+dPdlc>m]dsmx
Trauma Digital
sumber
4

C, 31 30 28 27

k;f(n){putch(k++)<n&&f(n);}

Karena putch tidak standar, inilah versi yang sepenuhnya sesuai:

k;f(n){putchar(k++)<n&&f(n);}

Harus dipanggil dari main:

main(){f(255);}

EDIT: Ditingkatkan dengan mengambil keuntungan dari nilai pengembalian putchar
EDIT 2: Dikurangi oleh karakter lain melalui rekursi

takra
sumber
1
putch adalah fungsi yang tidak standar. Juga, bolehkah saya bertanya mengapa jawaban ini diturunkan?
Stuntddude
@Stuntddude saya akan menambahkan versi alternatif yang menggunakan putchar, dan tidak tahu mengapa ini downvoted. Bagaimanapun, ini adalah salah satu yang lebih pendek.
takra
4

Perl, 17 byte

say chr for 0..$_
Demnogonis
sumber
1
Terlalu banyak kurung. print chr for 0..$ARGV[0]
manatwork
Kamu benar! Sudah lama sejak saya menggunakan perl
Demnogonis
1
Anda dapat menggunakan shiftalih-alih $ARGV[0]menyimpan 2 byte.
nyuszika7h
Jika Anda diizinkan untuk mencetak karakter pada baris yang berbeda, Anda dapat menggunakannya say. Juga, jumlah karakter lebih pendek jika Anda melakukannya sebagai satu-liner dengan -n. echo "90" | perl -nE'say chr for 0..$_'akan dihitung sebagai 18karakter. 17untuk say chr for 0..$_plus 1untuk n.
hmatt1
Kamu benar. Tetapi saytidak akan bekerja dengan setiap versi perl.
Demnogonis
3

CJam, 3

,:c

Saya menganggap argumen itu sebagai elemen tumpukan teratas.

Contoh penggunaan:

256,:c

ri,:c
Shujal
sumber
3

Ruby, 30 karakter

puts (0..$*[0].to_i).map &:chr
Gagang pintu
sumber
3

awk - 27

{while(i<$0)printf"%c",i++}

Untuk memberikan parameter pada stdin jalankan seperti:

awk '{while(i<$0)printf"%c",i++}' <<<96

Hanya untuk bersenang-senang: "think positive version" dimulai dengan yang pasti yes:

yes|head -96|awk '{printf"%c",NR-1}'

NR-1diperlukan untuk mencetak (char)0untuk NR==1. :-(

Dan mengapa kita tidak memiliki noperintah? Itu agak kejam!


sumber
1
alias no='yes no'
nyuszika7h
... tapi kemudian saya harus menghitung karakter definisi alias itu juga ... :-(
3

J - 5 byte

{.&a.

{.adalah Head, a.adalah Alphabet (daftar semua karakter) dan &Obligasi mereka, menghasilkan kata kerja monadik yang disebut seperti:

{.&a. 100 NB. first 100 characters

Catatan : Tampaknya ini tidak berfungsi secara interaktif: Jconsole dan jQt tampaknya mengatur terjemahan, mengeluarkan karakter kotak daripada beberapa karakter kontrol. Dalam skrip atau dari baris perintah, itu berfungsi meskipun:

  ijconsole <<< '127 {. a.' | hd
jpjacobs
sumber
Perhatikan bahwa alfabetnya bukan ASCII.
FUZxxl
Hingga {.&a. 127, bukan?
jpjacobs
Tidak karena J memiliki karakter menggambar kotak alih-alih beberapa karakter kontrol.
FUZxxl
Sebenarnya, menulis ini ke file dan memeriksanya dengan hex viewer memberitahu saya bahwa J menampilkan nilai yang benar (0x00 0x01, ...). itu hanya juru bahasa / IDE menginterpretasikan nilai-nilai itu sebagai karakter boxdrawing bukan karakter kontrol. Itu tidak persis sama dengan semua bahasa lain menggunakan charatau setara.
jpjacobs
Itu aneh karena saya mengujinya pada kotak UNIX saya dan memang menampilkan karakter Unicode untuk beberapa poin kode.
FUZxxl
3

gs2, 2 byte

V.

Ini harus bersaing, saya pikir! Itu akan bekerja bahkan pada hari-hari awal GS2. Coba di sini.

Lynn
sumber
1
Berhasil diuji dengan versi ini , yang mendahului tantangan sebulan.
Dennis
3

Brainfuck, 44 byte

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

Mengharapkan string desimal tanpa baris baru.

Cobalah online.

Membaca bilangan bulat dalam kisaran [0, max_cell_size]di brainfuck tidak sulit. Saya mendorong Anda untuk menciptakan metode bersih sendiri. Saya menganggap ini sebagai latihan tingkat pemula. (Operasi kebalikan dari mencetak nilai numerik sel lebih terlibat, dan dapat dianggap sebagai tugas tingkat menengah.)

Berikut adalah versi 58-byte yang dapat menangani 256implementasi 8-bit:

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

Mitch Schwartz
sumber
Kenapa aku tidak memikirkan ini ??? Ini cerdik !!!
FinW
Dapatkah saya meminjam ini untuk digunakan pada jawaban yang akan datang?
FinW
1
@FinW, saya kira Anda tidak tahu tentang pos meta ini .
Mitch Schwartz
2

Golfscript - 5

Terima kasih kepada @Dennis

~,''+
Peluruhan Beta
sumber
1
~,""+lebih pendek dan dengan benar memproses input dari STDIN.
Dennis
@ Dennis Itu tidak menghasilkan output untuk saya ...
Beta Decay
1
Apakah Anda menggunakan interpeter online? Untuk mensimulasikan input dari STDIN dengan benar, Anda harus menggunakan, misalnya ;"65", karena input dari STDIN akan selalu berupa string.
Dennis
1
@ Dennis Oh, terima kasih, itu berhasil sekarang!
Beta Decay
2

Lua - 43 41 Bytes

for i=1,arg[1]do print(string.char(i))end
William Barbosa
sumber
Anda dapat mempersingkat ini dengan bytea=""for i=1,arg[1]do print(a.char(i))end
Digital Veer
Anda dapat mempersingkat ini dengan 2 bytefor i=1,arg[1]do print(("").char(i))end
manatwork
2

Jalan Menengah 98, 22

&:00pv>0gk,@
0::-1<^j`

Agak menyedihkan bahwa ini sangat lama.

&:00p        ; gets numerical input, stores a copy at cell (0,0)               ;
     v       ; IP goes down                                                    ;

     <       ; IP goes left, so I execute 1-::0`j^                             ;
 ::-1        ; (1-::) subtract one from our number and duplicate it twice      ;
0       `    ; (0`) compare the number with 0, push 1 if greater else 0        ;
     <^j     ; if the result was 0, go up, otherwise continue going left       ;

      >0gk,  ; get the value at cell (0,0), print that many numbers from stack ;
           @ ; terminate program                                               ;
Justin
sumber
2

Python 3.4 - 36 bytes / 43 bytes

print(*map(chr,range(int(input()))))
print(*map(chr,range(int(input()))),sep='')

255 input ()

Cara kerjanya adalah:

  1. Dapatkan batas atas rentang
  2. Buat rentang tabel.
  3. Petakan rentang fungsi chr (mengambil int, mengembalikan ascii).
  4. Konsumsi peta melalui perluasan argumen splat (angka -> karakter -> cetak!)

Yang kedua hanya menghilangkan ruang yang memisahkan masing-masing karakter dengan imbalan 7 byte.

Logam Penuh
sumber
Anda bisa membuat ini menjadi lambda, seperti yang dinyatakan dalam pertanyaan ini, dan dengan Python 2, mapmengembalikan daftar, jadi Anda bisa melakukannyaf=lambda i:map(chr,range(i))
Justin
Itu benar, dan solusi awal saya mirip tetapi saya tidak ingin menggunakan lambda sehingga saya bisa segera mencetak output. Saya berharap peta terus tren mengembalikan daftar bukan iterator, bahkan jika itu lebih pythonic seperti itu.
Full Metal
2

Pascal 87

program _;var c:char;n:byte;begin n:=0;readln(n);for c:=chr(0)to chr(n)do write(c);end.

Pascal 73

program _;var c,n:byte;begin readln(n);for c:=0to n do write(chr(c));end.

Membangun dan bekerja dengan baik dari http://www.onlinecompiler.net/pascal

Mark K Cowan
sumber
1
FreePascal (dan jika saya ingat dengan benar, Turbo Pascal juga) hanya perlu 60 karakter: var c,n:byte;begin read(n);for c:=0to n do write(chr(c))end. pastebin.com/aFLVTuvh
manatwork
Sangat mungkin, saya hanya menggunakan Delphi. Tetapi seseorang mengeditnya di luar judul.
Mark K Cowan
2

x86 ASM (Linux) (banyak banyak byte kecuali Anda mengompilasinya)

Ditulis sebagai fungsi, anggap parameter dilewatkan dalam AX (Saya lupa nomor untuk read syscall) Juga tidak menyimpan [SP] atau BX.

test ax,ax
jz @Done
mov [sp],ax
@Loop:
mov ax,4
mov bx,1
mov cx,sp
mov dx,1
int 0x80
sub [sp],1  ; Can I do this?  Or do I need to load/sub/store separately?
jnz @Loop
@Done:
ret
Mark K Cowan
sumber
2
(Seharusnya saya menaruh eksploitasi F00F di sana, tidak seperti orang yang akan menjalankannya)
Mark K Cowan
7
Saya akan menjalankan ini. Saya tidak akan menjalankan ini sekarang.
Aearnus
2

Perl - 29

sub f{print map{chr}0..shift}
nyuszika7h
sumber
2

Ruby, 23

f=->n{puts *?\0..n.chr}

Penjelasan

  • Masukan diambil sebagai argumen ke lambda. Itu mengharapkan Integer.
  • "Operator perusak" ( *) meminta #to_aryRange untuk mencetak setiap karakter pada barisnya sendiri.
britishtea
sumber
2

Julia: 20 karakter (REPL)

Ini dekat dengan contoh pertanyaan: hanya menghasilkan karakter dan biarkan REPL untuk melakukan apa pun yang mereka inginkan.

f(n)=map(char,[0:n])

Julia: 33 karakter

Mencetak setiap karakter dalam baris terpisah.

print(map(char,[0:int(ARGS[1])]))
manatwork
sumber
2

M (MUMPS) - 21

R n F i=1:1:n W $C(i)

Dalam bentuk yang diperluas: READ n FOR i=1:1:n WRITE $CHAR(i)

temporisida
sumber
2

T-SQL: 68 63

Sebagai lingkaran cetak

DECLARE @i INT=64,@ INT=0A:PRINT CHAR(@)SET @+=1IF @<=@i GOTO A

T-SQL: 95 86

Sebagai kueri

DECLARE @ INT=64SELECT TOP(@+1)CHAR(ROW_NUMBER()OVER(ORDER BY 0/0)-1)FROM sys.messages

Sunting: Membuat perubahan dan perbaikan yang ditunjukkan oleh Muqo. Terima kasih. Perbaikan dan golf disarankan oleh @ t-clausen.dk

MickyT
sumber
Untuk pengulangan, Anda dapat menyimpan 5 atau lebih karakter yang mengonversi WHILE ke GOTOlabel with. Untuk permintaan, mungkin tentukan msdb.sys.objectsuntuk menjamin objek yang cukup. Juga, itu tidak menghasilkan CHAR (0). Namun, sebagai hiburan Anda bisa ORDER BY @.
Muqo
Jawaban kedua tidak valid. Anda dapat menulis ulang dengan cara ini dan memainkan 9 karakter: DECLARE @ INT = 64SELECT TOP (@ + 1) CHAR (ROW_NUMBER () LEBIH DARI (PEMESANAN DENGAN 0/0) -1) FROM sys.messages
t-clausen.dk
@ t-clausen.dk tidak yakin bagaimana saya membiarkannya. Terima kasih untuk itu.
MickyT
2

BrainFuck - 140 112 Bytes

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

Coba Di Sini!

Disimpan 28 byte dengan mengubah [<<<->>>->+<]>[<<<->>>->+<]>[<<<->>>-]ke [<<<->->->-].

Apa yang dilakukannya

,>,>,>                                                              Takes three inputs
                                                                    in three separate cells

-[>+<-----]>---[<+>-]<[<<<->->->-]<                                 Takes 48 off of each to
                                                                    convert them to decimal

[>+<-]<[>>++++++++++<<-]<[>>>>++++++++++[<++++++++++>-]<<<<-]>>>    Combines them into a
                                                                    three digit number by
                                                                    multiplying the first
                                                                    by 100, the second by
                                                                    10 and then adding all
                                                                    three

[>.+<-]                                                             Repeatedly prints the
                                                                    value of the adjacent
                                                                    cell and then adds one
                                                                    to it until it reaches
                                                                    the input value.
Baik
sumber