In bảng ASCII


28

Nhiệm vụ là hiển thị n ký tự của bảng ASCII .

Bạn có thể viết một hàm (hoặc một chương trình lấy tham số làm tham số, STDIN cũng được phép) lấy tham số n , đây sẽ là chỉ mục của ký tự cuối cùng để in.

Nhiệm vụ này khá đơn giản, vì vậy, ví dụ ở đây là một triển khai có thể có trong Python 2.7:

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

Như tôi đã nói đó là một nhiệm vụ đơn giản. Vì vậy, đây là mã golf và mã ngắn nhất sẽ thắng!

CHỈNH SỬA

Như một số bạn đã chỉ ra mã này không in kết quả. Đó chỉ là một ví dụ vì tôi có thể đấu tranh giải thích vấn đề bằng tiếng Anh ;-).

EDIT2

Vui lòng gửi câu trả lời bằng bất kỳ ngôn ngữ lập trình nào, ngay cả khi đó không phải là mã ngắn nhất. Có thể có một số triển khai thú vị ngoài kia!

EDIT3

Đã sửa ví dụ để nó in kết quả.


1. Nó có phải là một chức năng? 2. Theo mã tham chiếu của bạn, n sẽ là ký tự đầu tiên không được in.
Dennis

2
Trên thực tế mã tham chiếu không in gì. Nó chỉ trả về một danh sách các ký tự và cho phép REPL làm bất cứ điều gì nó muốn với kết quả.
manatwork

1
Ai đó có thể vui lòng giải thích các downvote? Tôi xin lỗi nếu tiếng anh của tôi không tốt Nếu có điều gì đó không rõ ràng trong câu hỏi xin vui lòng cho tôi biết.
oopbase

1
for x in range(input()):print chr(x)Thực sự sẽ in các ký tự, nếu bạn muốn chỉnh sửa ví dụ của bạn.
FryAmTheEggman

2
nota [i for i in range(n)]khá giống vớirange(n)
njzk2

Câu trả lời:


19

CJam, 4 byte

ric,

Chương trình đầy đủ đọc từ STDIN (trường nhập trong trình thông dịch trực tuyến ).

Điều này chỉ đơn giản là thực thi range(chr(int(input()))), lợi dụng thực tế ,mang lại cho một mảng các ký tự nếu đối số của nó là một ký tự.

Tôi gọi dibs trên c,(2 byte), chỉ trong trường hợp giả sử đầu vào đã có trên ngăn xếp thì hóa ra là được phép.


Bạn có phải chỉ định một số đầu vào? Người chạy trực tuyến chỉ xuất ra mã chính nó.
thao tác

12
@manatwork: Chỉ một giây thôi. Bạn phải nhanh chân khi đăng những thứ này ...;)
Dennis

Tôi hơi bối rối bởi điều này. Ký tự ở 0 (aka 0c) ngăn không cho bất cứ thứ gì khác được in sau nó. ric, (dường như hoạt động tốt. Điều này có nghĩa là mã không hoạt động.
kaine

1
@kaine: Internet Explorer được viết bằng C ++, không sử dụng chuỗi kết thúc null. Theo đó , các ký tự null là lỗi phân tích cú pháp trong HTML 5; trình duyệt phải thay thế nó bằng hoặc hủy bỏ xử lý tài liệu.
Dennis

4
Hãy nhớ rằng bạn phải nhập đủ lớn n, vì vài chục ký tự ASCII đầu tiên là các ký tự không in được. Sự thật thú vị: chương trình này cũng xuất ra bảng Unicode, ví dụ n = 9999
Chiếm

25

cân não - 169 146 142 byte

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

Hạn chế:

  • EOF phải là 0
  • Yêu cầu các ô gói 8 bit
  • Vì ^, mod nhập vào 256

Không phải là câu trả lời ngắn nhất ở đây, nhưng hey, brainfuck! Đây sẽ là một thử thách cân não thực sự, thực sự tốt, ngoại trừ thực tế là nó đòi hỏi đầu vào có thể đọc được của con người mà không đảm bảo số lượng chữ số. Tôi có thể đã yêu cầu đầu vào để có các số 0 đứng đầu để làm cho nó dài 3 ký tự, nhưng điều đó có gì vui? : D Một vấn đề lớn khi lấy đầu vào theo cách này là cấu trúc vòng lặp hoặc phân nhánh duy nhất của brainfuck kiểm tra xem ô hiện tại có bằng không hay không. Khi đầu vào có thể chứa các số 0, nó có thể khiến mã của bạn lấy các nhánh mà nó không nên lấy. Để giải quyết vấn đề này, tôi lưu trữ từng chữ số của đầu vào cộng 1 , sau đó trừ đi phần thừa ở giây cuối cùng có thể. Bằng cách đó, tôi luôn biết số không của mình ở đâu.

Tôi đã nói rằng đây sẽ là một thử thách trí tuệ tuyệt vời mà không cần phải phân tích cú pháp đầu vào. Tại sao vậy? Chà, giả vờ rằng chúng ta không lấy đầu vào số. Chúng tôi sẽ nói thách thức là "Đưa ra một byte đầu vào, xuất tất cả các ký tự ASCII bên dưới byte đó". Đây là câu trả lời của tôi sẽ là:


brainfuck - 8 byte

,[->.+<]

Đó là một sự khác biệt hoàn toàn! Chương trình thực tế sử dụng 135 hướng dẫn để thu thập dữ liệu đầu vào (hơn 95% chương trình!), Chỉ vì đó là một con người gõ nó. Lưu số dưới dạng một byte và đưa cho tôi, và nó chỉ mất một.

(Sự thật thú vị: Nếu bạn hiểu toàn bộ chương trình giả thuyết, thì xin chúc mừng! Bạn hiểu toàn bộ bộ não. Toàn bộ ngôn ngữ chỉ có tám lệnh và chương trình đó xảy ra để sử dụng chính xác từng lệnh một lần.)

Giải trình

-[+>+[+<]>+]>+               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

Tốt đẹp! Chắc chắn +1 cho nỗ lực :-)
oopbase

1
Bạn có thể lưu một số byte trên phần đầu ra: >[-]<[->.+<]Đặt ô bên cạnh ô hiện tại thành 0, sau đó đếm ngược ô hiện tại trong khi tăng ô bên cạnh và in đồng thời giá trị.
Shujal

@shu Đó là một điểm tuyệt vời! Tôi đã không nghĩ về điều đó cả. Ngoài việc ngắn hơn, nó còn khắc phục vấn đề tôi gặp phải khi bị nghẹn đầu vào lớn và nó có thể nhanh hơn! Cảm ơn :)
undergroundmonorail

Vâng, bây giờ rất nhiều, nhanh hơn nhiều. Tôi cũng không cần >[-]<phần đó vì tôi đã ở cạnh một ô trống. :)
undergroundmonorail



11

Befunge 93 - 23 21

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

Befunge 93 - 15 13 (bởi Ingo Bürk)

Cái này in danh sách ngược lại, nhưng OP chỉ nói rằng chúng ta cần in các nký tự đầu tiên , không phải là nó phải theo thứ tự.

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

Không thể chơi gôn được nữa mà không chuyển sang Befunge98 (đối với toán tử ";", xem câu trả lời của @ Kasran )

Hãy thử nó ở đây:


Tôi hy vọng bạn không
bận

Câu hỏi không nói rõ rằng chúng ta phải in nó theo bất kỳ thứ tự nào, vì vậy đây ngắn hơn năm byte: &> #- #1:# :#,_@(nó chỉ in ngược lại)
Ingo Bürk

Tôi đã loại bỏ các byte khác trong tổng số 15. Vì các dòng mới, tôi sẽ chỉnh sửa nó vào bài viết của bạn.
Ingo Bürk

Chơi tốt trên môn đánh gôn thêm :) Đối với người phiên dịch nội tuyến, tôi không biết có một người. Thật tuyệt, cảm ơn :)
karhell

Thông dịch viên là mới từ các thách thức liên kết. Tôi chỉ nghĩ rằng tôi thực sự sử dụng nó khi tôi thấy câu trả lời của bạn. :)
Ingo Bürk

8

Java, 151 128 77 62 56 byte

Đầu tiên hãy thử chơi golf.

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

Sử dụng:

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));
    }
}

Cảm ơn @Shujal, @flawr, @Ingo Bürk và @Loovjo vì đã giảm byte nghiêm trọng.


1
Bạn có thể lưu một số ký tự bằng cách khai báo int trong khi mở máy quét: int i,n=new Scanner(...và thay đổi vòng lặp thành for(;++i<n;). Ngoài ra, bạn không cần phải gọi Character.toString. Bạn chỉ có thể cung cấp cho System.out một giá trị char và nó sẽ vui vẻ xuất nó.
Shujal

1
Thử thách cho phép sử dụng ađầu vào của bạn . Và tôi nghĩ rằng bạn có thể rút ngắn forvòng lặp bằng cách lạm dụng vị trí tăng dần làm thân vòng lặp: for(;++i<n;System.out.print((char)i));(nhưng bạn có thể phải thay đổi giá trị khởi tạo hoặc kết thúc bằng + - 1)
flawr

1
Bạn được phép viết một hàm, vì vậy không cần cho cả lớp và mọi thứ.
Ingo Bürk

1
@RodolfoDias Bạn có chắc không? Rõ ràng, ++i<n+1nên tương đương với ++i<=n. Lưu ý =trong đó, tuy nhiên! Nó chỉ tiết kiệm một byte. Nó làm việc cho tôi.
Ingo Bürk

1
Vì vậy, chúng tôi đi xuống void f(int n){int i=0;for(;++i<=n;System.out.print((char)i));}là 62 byte. Ít nhất tôi không thấy nhiều hơn để chơi golf bây giờ. :)
Ingo Bürk

6

APL, 5

⎕UCS⍳

Ví dụ sử dụng:

⎕UCS⍳256

1
Bạn không cần phải làm một dfn. Chỉ cần ⎕UCS⍳ sẽ hoạt động tốt. Vì vậy, 5 ký tự
Moris Zucca

1
Bạn không phải hỗ trợ các điểm mã trên 127. Chỉ cần ↑ ⎕AV sẽ hoạt động tốt. Vì vậy, 4 ký tự
Adam

6

JavaScript, ES6 - 52 58 56 53 44 42 byte

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

Dán cái này vào bảng điều khiển Firefox. Chạy như f(NUM).

Phải làm cho nó dài hơn bởi vì đầu tiên không chấp nhận đầu vào đúng.

Xuống 3, cảm ơn edc65! Xuống tới 44 nhờ Xoay!


1
Điều này không thực sự xử lý cả tham số cũng như đầu vào.
manatwork

Chỉ cần thay đổi 70 thành một số khác nhau; đó là đầu vào.
Scimonster

Được rồi, tôi đã cập nhật nó để lấy đầu vào, với chi phí là 6 byte.
Scimonster

3
-2: f = n => [... Mảng (n)]. Map ((v, i) => String.fromCharCode (i))
edc65

2
44 nhân vật! f=n=>String.fromCharCode(...Array(n).keys())
Xoay

6

Haskell, 17 23 byte

flip take['\0'..]

Không chắc chắn nếu có thể làm tốt hơn mà không cần nhập khẩu.

Chỉnh sửa

Giải pháp đầu tiên của tôi không thực sự in kết quả, vì vậy hãy cho phép thêm 6 ký tự cho điều đó:

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

Ngoài ra, không ngắn hơn (25 ký tự có in, 19 không có), nhưng một cách tiếp cận thay thế thú vị (mặc dù nó yêu cầu 'Data.List'):

print.((inits['\0'..])!!)

Điều này không thực sự in kết quả.
nyuszika7h

@ nyuszika7h bây giờ
John Dvorak

(`take`['\0'..])tiết kiệm một byte.
Laikoni


4

C, 31 30 28 27

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

Vì putch không đạt tiêu chuẩn, đây là phiên bản tuân thủ đầy đủ:

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

Phải được gọi từ chính:

main(){f(255);}

EDIT: Được cải thiện bằng cách tận dụng giá trị trả về putar
EDIT 2: Giảm bởi một ký tự khác thông qua đệ quy


1
putch là một chức năng không chuẩn. Ngoài ra, tôi có thể hỏi tại sao câu trả lời này bị hạ cấp?
Diễn viên đóng thế

@Stuntddude Tôi sẽ thêm một phiên bản thay thế sử dụng putchar, và không biết tại sao điều này lại bị hạ cấp. Rốt cuộc, nó là một trong những cái ngắn hơn.
Luân xa

4

Perl, 17 byte

say chr for 0..$_

1
Quá nhiều dấu ngoặc đơn. print chr for 0..$ARGV[0]
manatwork

Bạn đúng! Đã được một thời gian kể từ khi tôi sử dụng perl
Demnogonis

1
Bạn có thể sử dụng shiftthay vì $ARGV[0]để lưu 2 byte.
nyuszika7h

Nếu bạn được phép in các ký tự trên các dòng khác nhau, bạn có thể sử dụng say. Ngoài ra, số lượng ký tự sẽ ngắn hơn nếu bạn thực hiện dưới dạng một lớp lót -n. echo "90" | perl -nE'say chr for 0..$_'sẽ được tính là 18nhân vật. 17cho say chr for 0..$_cộng 1cho n.
hmatt1

Bạn đúng. Nhưng saysẽ không hoạt động với mọi phiên bản của perl.
Demnogonis

3

3 giờ sáng

,:c

Tôi giả sử đối số là phần tử ngăn xếp trên cùng.

Ví dụ sử dụng:

256,:c

ri,:c


3

ôi - 27

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

Để cung cấp tham số trên stdin chạy nó như sau:

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

Chỉ để cho vui: "phiên bản suy nghĩ tích cực" bắt đầu bằng một từ dứt khoát yes:

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

NR-1là cần thiết để in (char)0cho NR==1. :-(

Và tại sao chúng ta không có nolệnh? Điều đó có nghĩa là!


1
alias no='yes no'
nyuszika7h

... nhưng sau đó tôi cũng sẽ phải đếm các ký tự của định nghĩa bí danh đó ... :-(

3

J - 5 byte

{.&a.

{.là Head, a.là Bảng chữ cái (một danh sách tất cả các ký tự) và Liên &kết chúng, tạo ra một động từ đơn âm gọi là:

{.&a. 100 NB. first 100 characters

Lưu ý : Có vẻ như điều này không hoạt động tương tác: Jconsole và jQt dường như thiết lập một bản dịch, xuất ra các ký tự hộp thay vì một số ký tự điều khiển. Trong một tập lệnh hoặc từ dòng lệnh, nó vẫn hoạt động:

  ijconsole <<< '127 {. a.' | hd

Lưu ý rằng bảng chữ cái không chính xác ASCII.
FUZxxl

Lên đến {.&a. 127, nó là không?
jpjacobs

Không bởi vì J có các ký tự vẽ hộp thay vì một số ký tự điều khiển.
FUZxxl

Trên thực tế, việc viết nó vào một tệp và kiểm tra nó bằng trình xem hex cho tôi biết rằng J đưa ra các giá trị chính xác (0x00 0x01, ...). chỉ có trình thông dịch J / IDE diễn giải các giá trị đó dưới dạng ký tự rút tiền thay vì ký tự điều khiển. Nó thực hiện chính xác như tất cả các ngôn ngữ khác sử dụng charhoặc tương đương.
jpjacobs

Điều đó thật kỳ lạ bởi vì tôi đã thử nghiệm nó trên hộp UNIX của mình và nó thực sự đã tạo ra các ký tự Unicode cho một số điểm mã.
FUZxxl


3

Brainfuck, 44 byte

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

Yêu cầu một chuỗi thập phân mà không có một dòng mới.

Hãy thử trực tuyến.

Đọc số nguyên trong phạm vi [0, max_cell_size] trong brainfuck không khó. Tôi khuyến khích bạn tự phát minh ra một phương pháp sạch. Tôi coi đây là một bài tập cấp độ mới bắt đầu. (Hoạt động ngược của việc in giá trị số của một ô có liên quan nhiều hơn và có thể được coi là một nhiệm vụ cấp trung gian.)

Đây là phiên bản 58 byte có thể xử lý 256các triển khai 8 bit:

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


Tại sao tôi không nghĩ về điều này ??? Điều này thật tài tình !!!
FinW

Tôi có thể mượn cái này để sử dụng cho câu trả lời trong tương lai không?
FinW

1
@FinW Tôi đoán bạn không biết về bài đăng meta này .
Mitch Schwartz

2

Golfscript - 5

Cảm ơn @Dennis

~,''+

1
~,""+ngắn hơn và xử lý chính xác đầu vào từ STDIN.
Dennis

@Dennis Điều đó không tạo ra bất kỳ đầu ra nào cho tôi ...
Beta Decay

1
Bạn đang sử dụng interpeter trực tuyến? Để mô phỏng chính xác đầu vào từ STDIN, bạn phải sử dụng, ví dụ ;"65", vì đầu vào từ STDIN sẽ luôn là một chuỗi.
Dennis

1
@Dennis Oh cảm ơn mà làm việc bây giờ!
Beta Decay

2

Lua - 43 41 byte

for i=1,arg[1]do print(string.char(i))end

Bạn có thể rút ngắn điều này bằng một bytea=""for i=1,arg[1]do print(a.char(i))end
Digital Veer

Bạn có thể rút ngắn điều này xuống 2 bytefor i=1,arg[1]do print(("").char(i))end
thao tác

2

Befunge 98, 22

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

Loại buồn mà lâu thế này.

&: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                                               ;

2

Python 3,4 - 36 byte / 43 byte

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

255 đầu vào ()

Cách thức hoạt động của nó là:

  1. Nhận giới hạn trên của phạm vi
  2. Tạo một phạm vi của bảng.
  3. Ánh xạ phạm vi tới hàm chr (mất int, trả về ascii).
  4. Sử dụng bản đồ thông qua mở rộng đối số splat (số -> ký tự -> in!)

Cái thứ hai chỉ loại bỏ không gian ngăn cách mỗi ký tự để đổi lấy 7 byte.


Bạn rất có thể biến điều này thành lambda, vì câu hỏi nêu rõ điều này và trong Python 2, maptrả về một danh sách, vì vậy bạn chỉ có thể làmf=lambda i:map(chr,range(i))
Justin

Điều đó đúng và giải pháp ban đầu của tôi cũng tương tự nhưng tôi không muốn sử dụng lambda để tôi có thể in ngay lập tức. Tôi muốn bản đồ giữ xu hướng trả về một danh sách thay vì một trình vòng lặp, ngay cả khi nó là pythonic theo cách đó.
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.

Xây dựng và chạy tốt từ http://www.onlinecompiler.net/pascal


1
FreePascal (và nếu tôi nhớ chính xác, Turbo Pascal cũng vậy) chỉ cần 60 trong số các nhân vật đó: var c,n:byte;begin read(n);for c:=0to n do write(chr(c))end. pastebin.com/aFLVTuvh
manatwork

Rất có thể, tôi chỉ sử dụng Delphi. Nhưng ai đó đã chỉnh sửa nó ra khỏi tiêu đề.
Mark K Cowan

2

x86 ASM (Linux) (nhiều byte trừ khi bạn biên dịch nó)

Được viết dưới dạng hàm, giả sử tham số được truyền vào AX (Tôi quên số cho hình chữ nhật đã đọc) Cũng không bảo toàn [SP] hoặc 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

2
(Lẽ ra tôi nên đặt một F00F khai thác trong đó, nó không giống như bất cứ ai sẽ chạy nó anyway)
Đánh dấu K Cowan

7
Tôi sẽ chạy nó. Tôi sẽ không chạy nó bây giờ.
Aearnus


2

Ruby, 23

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

Giải trình

  • Đầu vào được lấy làm đối số cho lambda. Nó mong đợi một số nguyên.
  • "Toán tử hủy diệt" ( *) gọi #to_arytrên Phạm vi để in mọi ký tự trên dòng riêng của nó.

2

Julia: 20 ký tự (REPL)

Điều này gần với ví dụ của câu hỏi: chỉ cần tạo các ký tự và để REPL làm bất cứ điều gì nó muốn với chúng.

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

Julia: 33 nhân vật

In mỗi ký tự trong một dòng riêng biệt.

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

2

M (MUMPS) - 21

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

Ở dạng mở rộng: READ n FOR i=1:1:n WRITE $CHAR(i)


2

T-SQL: 68 63

Như một vòng lặp in

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

T-SQL: 95 86

Như một truy vấn

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

Chỉnh sửa: Thực hiện các thay đổi và sửa lỗi được chỉ ra bởi Muqo. Cảm ơn. Sửa lỗi và chơi golf được đề xuất bởi @ t-clausen.dk


Đối với vòng lặp, bạn có thể lưu 5 ký tự chuyển đổi WHILE thành GOTOnhãn có nhãn. Đối với truy vấn, có thể chỉ định msdb.sys.objectsđể đảm bảo đủ các đối tượng. Ngoài ra, nó không xuất CHAR (0). Tuy nhiên, như an ủi bạn có thể ORDER BY @.
Muqo

Câu trả lời thứ hai không hợp lệ. Bạn có thể viết lại theo cách này và chơi golf 9 ký tự: DECLARE @ INT = 64SELECT TOP (@ + 1) CHAR (ROW_NUMBER () QUÁ (ĐẶT HÀNG 0/0) -1) TỪ sys.messages
t-clausen.dk

@ t-clausen.dk không chắc chắn làm thế nào tôi để cái đó qua. Cảm ơn vì điều đó.
MickyT

2

BrainFuck - 140 112 byte

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

Hãy thử nó ở đây!

Đã lưu 28 byte bằng cách thay đổi [<<<->>>->+<]>[<<<->>>->+<]>[<<<->>>-]thành [<<<->->->-].

Những gì nó làm

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.