In số từ 1 đến 10


42

Đây có thể là một thử thách rất đơn giản, nhưng tôi ngạc nhiên là nó chưa được thực hiện trên môn đánh gôn:

In tất cả các số nguyên từ 1 đến 10, bao gồm theo thứ tự tăng dần đến đầu ra tiêu chuẩn.

Định dạng đầu ra của bạn có thể là bất cứ điều gì ngôn ngữ của bạn hỗ trợ. Điều này bao gồm các dấu phân cách tùy ý (dấu phẩy, dấu chấm phẩy, dòng mới, kết hợp của những thứ đó, v.v., nhưng không có chữ số), và tiền tố và hậu tố (như [...]). Tuy nhiên, bạn không được xuất bất kỳ số nào khác từ 1 đến 10. Chương trình của bạn có thể không nhận bất kỳ đầu vào nào. Sơ hở tiêu chuẩn là không được phép.

Đây là , vì vậy câu trả lời ngắn nhất bằng byte thắng!

Bảng xếp hạng


10
Liên quan (trùng lặp?)
Luis Mendo

17
Nếu thay đổi duy nhất là mã hóa cứng một tham số duy nhất thì nó nằm trong biểu ngữ " thay đổi tầm thường " và theo tiêu chuẩn của trang web này vẫn được tính là một bản sao.
Peter Taylor

10
@PeterTaylor Thử thách khác có một vấn đề rất lớn với các giới hạn số nguyên mặc dù. Cách nó chỉ định mọi ngôn ngữ TC không có số nguyên 64 bit cần thực hiện chúng. (Và điều đó ảnh hưởng đến khá nhiều ngôn ngữ.)
Martin Ender

17
@xnor Khá thẳng thắn, tôi muốn đóng thử thách khác như một bản sao của thử thách này. Yêu cầu khá nhiều làm hỏng nó.
Dennis

9
Tôi không thể tin rằng mỗi một trong số 71 câu trả lời (hiện tại) giả sử cơ sở phải là số thập phân
Skippy le Grand Gourou

Câu trả lời:


68

C, 36 byte

main(i){while(printf("%d ",i++)<3);}

Điều này hoạt động vì vòng lặp chấm dứt sau số 2 chữ số đầu tiên.


1
Không có đề cập đến việc có thể truyền tham số cho hàm.
Ash Burlaczenko

10
@AshBurlaczenko Bạn đang nói về cái gì? Đây là một kỹ thuật tiêu chuẩn trong việc chơi gôn để khởi tạo một int thành 1. Bạn không cần phải vượt qua bất kỳ đối số dòng lệnh nào. Trong thực tế, làm như vậy sẽ khiến chương trình tạo ra đầu ra sai.
xsot

6
@AshBurlaczenko Bằng sự đồng thuận, chúng tôi đã đồng ý rằng các chương trình có thể cho rằng chúng sẽ không được gọi với đầu vào không cần thiết (trong trường hợp này, không có đối số dòng lệnh bổ sung, ngoài chính chương trình). Điều đó có nghĩa là iở đây sẽ luôn là 1 khi chương trình này được chạy. Có phải ý của bạn là thứ khác?
FryAmTheEggman

2
Xin lỗi, tôi đã không viết C nhưng cho rằng giá trị mặc định của nó sẽ là 0 như trong mọi ngôn ngữ tôi đã sử dụng.
Ash Burlaczenko

16
@AshBurlaczenko Trong C, đối số đầu tiên chính là số lượng đối số dòng lệnh (bao gồm cả tên thực thi). Vì không có đối số bổ sung nào được thông qua, nên số đó là 1. Đối số thứ hai chính là danh sách thực tế của các đối số dòng lệnh, nhưng đối số đó bị bỏ qua trong chương trình này.
Chris Bouchard

43

HTML, 44 byte

<ol><li><li><li><li><li><li><li><li><li><li>

Điều này dài hơn mã hóa đầu ra, nhưng nó thú vị hơn theo cách này. Nó tạo ra một danh sách có thứ tự ( <ol>) với mười phần tử danh sách trống ( <li>). Theo mặc định, danh sách được sắp xếp được phân định bằng số thập phân bắt đầu bằng 1 và dấu chấm.

HTML5 rất tha thứ về các thẻ không được tiết lộ, do đó, nó đóng các lithẻ hoàn toàn.


4
+1 vì lạm dụng sự tha thứ của HTML5 (?).
HyperNeutrino

1
Máu lạnh. Tôi thích nó.
ricdesi

Trên thực tế, NinjaBearMonkey và @HyperNeutrino, đây không phải là sự tha thứ của Hồi giáo. HTML5 khá rõ ràng về những thẻ được phép không được tiết lộ. Chỉ có danh sách và danh sách các mục là hai.
KRyan

41

Bash, 12 ký tự

echo {1..10}

Chạy mẫu:

bash-4.3$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

Bash + coreutils, 10 ký tự

(Chỉ cố gắng để vui vẻ và sử dụng ': No such file or directory↵ls: cannot access 'như dấu phân cách.)

ls {1..10}

Chạy mẫu:

bash-4.3$ ls {1..10}
ls: cannot access '1': No such file or directory
ls: cannot access '2': No such file or directory
ls: cannot access '3': No such file or directory
ls: cannot access '4': No such file or directory
ls: cannot access '5': No such file or directory
ls: cannot access '6': No such file or directory
ls: cannot access '7': No such file or directory
ls: cannot access '8': No such file or directory
ls: cannot access '9': No such file or directory
ls: cannot access '10': No such file or directory

Bash + coreutils, 6 ký tự

(Chỉ cố gắng để trở nên nhàm chán. Hoặc không chỉ là cố gắng)

seq 10

Chạy mẫu:

bash-4.3$ seq 10
1
2
3
4
5
6
7
8
9
10

6
Cuối cùng chỉ là seq / coreutils, bash không liên quan.
hyde

1
@hyde: Nếu không có bash, cuộc gọi đến seq sẽ không thể thực hiện được, phải không?
Mega Man

Trong tầm nhìn của tôi, nếu chúng tôi rời đi bash, thì đó seqsẽ là người phiên dịch. Nhưng sau đó 10là một chương trình hợp lệ trong ngôn ngữ của se se tinh?
manatwork

Không bao giờ thử điều này tại bảng điều khiển của bạn: echo {1..1000000000} Nếu bạn tò mò, hãy tự làm với rủi ro của mình.
Brain90

@ Brain90, không có nguy hiểm trên máy RAM 8Gb kém của tôi. ;) Bash bash: mở rộng cú đúp: không thể phân bổ bộ nhớ cho 1000000000 phần tử. Ít nhất là với bash4.3.46.
manatwork

24

Thạch, 2 byte

⁵R

Giải trình

⁵  Return the fifth command line argument or 10
 R Range
   Implicit output

7
⁵R, hai byte
Luis Mendo

13
Tại sao trên trái đất, ai đó sẽ phát minh ra một ngôn ngữ trong đó một lệnh trả về đối số thứ năm hoặc số nguyên 10? ..
Andreï Kostyrka

14
@ AndreïKostyrka Bởi vì Dennis
Thiền vào

1
Có một mã hóa chỉ là một byte? Vì là 3 byte trong UTF-8, nên độ dài của chương trình phải là 4 byte.
Radovan Garabík

2
@ RadovanGarabík Jelly sử dụng bộ mã riêng của mình
TuxCrafting

20

Brainfuck, 58 byte

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

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


1
Hãy đánh bại tôi, và ngắn hơn nữa, dù sao tôi cũng sẽ đăng bài của mình vì tôi không nghĩ chúng ta đã sử dụng cùng một mánh khóe. Có +1 của tôi :)
Katenkyo 21/07/2016

Tôi đã gần với 67 byte, nhưng không đủ gần:++++++[>++++++++<-]>>>++++++++++[-<+<<+>>>]<[-<.+<.>>]<<-[>-<-]>.-.
Julian Lachniet


16

LOLCODE, 79 byte

IM IN YR l UPPIN YR v TIL BOTH SAEM v AN 10
VISIBLE SUM OF v AN 1
IM OUTTA YR l

Mã này có thể cần một số điều chỉnh tùy thuộc vào trình biên dịch bạn đang sử dụng. Một số muốn bạn thêm HAI / KTHXBYE, một số muốn bạn khai báo biến trước thời hạn. Một trình biên dịch sẽ phá vỡ nếu tên vòng lặp của bạn ngắn hơn hai ký tự, mặc dù tên vòng lặp không bao giờ được sử dụng.


15

CJam, 6 5 byte

A,:)`

Lưu 1 byte nhờ Luis Mendo

Đầu ra: [1 2 3 4 5 6 7 8 9 10]

Giải thích:

A,      e# Push a list from 0 to 9.
  :)    e# Increment all values.
    `   e# Stringify the list.

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


3
tôi thích mặt cười (Không có lỗi trong lời giải thích của bạn: A, tạo danh sách từ 0 đến 9)
KarlKastor

14

R, 4 byte

2:10

":" Có lẽ là một trong những lệnh R được sử dụng nhiều nhất. Cải thiện bởi Barranka trong các ý kiến.


2
Nếu họ yêu cầu in một chuỗi, không trả về một vectơ, hãy xem xét cat(1:10).
Andreï Kostyrka

Có một khoảng trắng hàng đầu?
Clashsoft

9
Cho rằng đầu ra là [1] 1 2 3 4 5 6 7 8 9 10, có thể nó sẽ tốt hơn 2:10, nó sẽ đầu ra[1] 2 3 4 5 6 7 8 9 10
Barranka

@Clashsoft, đó là một sai lầm - cảm ơn bạn. Và vâng, Barranka, điểm tốt - được nâng cấp.
Forgottenscience

13

Ruby, 8 byte

Tách bằng dòng mới.

p *1..10

* Tách bằng dòng mới.
David Conrad

Bạn có thể làm điều đó?
dkudriavtsev

@DmitryKudriavtsev có, ngôi sao khiến mã bị phá vỡ p 1,2,3,4,5,6,7,8,9,10và dấu phẩy gây ra pđể phân tách chúng theo dòng mới.
Mực giá trị

ĐỒNG Ý. Tôi không nghĩ rằng nhà điều hành có quyền ưu tiên thấp hơn phạm vi.
dkudriavtsev

11

Bình thường, 2 byte

ST

Lần đầu tiên tôi đã sử dụng một langing golf để trả lời!

Giải trình:

S    1-indexed range. [1, 2, ... A].
 T   Variable. Initialized to 10. (Ten)
     Implicitly printed.



10

Trên thực tế, 9 byte

19`;1+`na

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

Giải trình:

19`;1+`na

1           Push 1 to stack
 9          Push 9 to stack
  `;1+`     Push Function inside ` to stack
   ;        Push top element to stack
    1+      Add 1 to top element
       n    Run function x times (9 times)
        a   Invert stack

9
Chào mừng bạn đến với Câu đố lập trình và Code Golf!
Ad Nam

10

Toán học - 13 byte

Echo@Range@10

Đã lưu 4 byte nhờ MartinEnder !

Đầu ra: >> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


10

JavaScript (ES6), 29 byte

alert([...`${1e11/81^14}`]+0)

Đầu ra 1,2,3,4,5,6,7,8,9,10. Không phải là câu trả lời ngắn nhất nhưng tôi nghĩ đó là một phép tính thú vị.


tại sao khôngalert([...'1'+234567891]+0)
edc65

2
@ edc65 a) nó không thú vị lắm b) nó không ngắn như câu trả lời JavaScript được đăng trước đó c) nó thậm chí không ngắn bằng alert([...'1234567891']+0).
Neil


8

DC , 12 byte

... một chút ý nghĩa bây giờ ...

[zzpA>L]dsLx

Chưa được kiểm soát:

[   # start string constant
z   # push stack length (0 on 1st cycle)
z   # push stack length (1 on 1st cycle)
p   # print top of stack
A>L # if 10(decimal) < tos: execute L
]   # end string constant, push it
d   # duplicate the string
sL  # store a copy in L
x   # execute tos (which is the other string copy)

Một trong các zhoạt động (chiều dài ngăn xếp đẩy) không có hoạt động tương ứng nào lấy nó từ ngăn xếp. Bằng cách này, ngăn xếp phát triển với mỗi lần lặp bởi một. Điều này bị lạm dụng như bộ đếm vòng lặp.

Vòng lặp này bắt đầu với một ngăn xếp trống, do đó, lần zđẩy thứ 1 0trong lần lặp thứ 1 để việc in xảy ra sau lần thứ 2 ztương ứng với việc nhân đôi kết quả của 1+dphiên bản bên dưới. Bằng cách này, việc so sánh cần kiểm tra lớn hơn 10ở đây thay vì bigger than 11dưới đây.


DC , 14 byte

Chỉ cần thẳng về phía trước ...

1[p1+dB>L]dsLx

Chưa được kiểm soát:

1   # push 1
[   # start string constant
p   # print top of stack
1+  # add 1 to tos
d   # push tos (duplicate)
B>L # if 11(decimal) < tos: execute L
]   # end string constant, push it
d   # duplicate the string
sL  # store a copy in L
x   # execute tos (which is the other string copy)

Tôi ước bạn giải thích những điều này = (
Evan Carroll

@EvanCarroll - Viết dcchương trình dễ hơn giải thích. Nhưng tôi đã thử ... ;-)
yeti

7

> <> , 13 byte

01+:a)?;:nao!

Giải trình :

01+:a)?;:nao!

0                 push initial value of n on the stack
 1+               increments n
   :              duplicates n on the stack
    a             push 10 on the stack
     )            pops n and 10 of the stack, push n>10 on the stack
      ?;          if n>10, stops program execution
        :n        duplicates n on the stack in order to display it
          ao      display 10 (x0A, linefeed)
            !     skips the next instruction, which since ><> loops is the push 0

Bạn có thể thấy nó hoạt động trên trình thông dịch trực tuyến .


Bạn có thể vui lòng thêm một lời giải thích?
Clashsoft

1
Chạy chương trình nao!
Cyoce

@Cyoce> <> thật tuyệt khi viết những đoạn mã nhiệt tình, tôi đã nhận được câu trả lời kiểm tra thiết bị xe máy này trong cùng một hướng;)
Aaron


6

J, 6 byte

1+i.10

Đầu ra: 1 2 3 4 5 6 7 8 9 10

Giải thích:

1+       NB. Add one to...
  i.10   NB. A range from 0 to 9.

Tôi nghĩ là vậy >:i.10, nhưng đó là điều tương tự.
Dane

6

Haskell, 17 byte

main=print[1..10]

Đầu ra [1,2,3,4,5,6,7,8,9,10].


Tôi có một chút bối rối ở đây ... Tôi gần như chắc chắn rằng nó nên như vậy [1..10]. Tôi không có quyền truy cập vào trình biên dịch haskell, nhưng tôi sẽ kiểm tra lại vào buổi sáng.
Zwei

@Zwei Ranges không bao gồm giới hạn trên của chúng trong Haskell.
C. Quilley

1
@ C.Quilley Họ hoàn toàn làm được. Bạn có thể nghĩ về Python.
xnor

Huh, tôi chắc chắn tôi đã kiểm tra mã này. Lời xin lỗi cho sự khẳng định trước đó.
C. Quilley

1
Tôi không nghĩ bạn cần phần chính = phần; phần còn lại có loại chương trình haskell, IO (). Chính xác cho tôi nếu có một phán quyết cụ thể chống lại điều này.
Lazersmoke

6

Fuzzy Octo Guacamole, 7 byte

1.25*$:

Nhiều 2*5, lấy phạm vi của điều đó 1, và in toàn bộ ngăn xếp.

1.25*$:
1.      # Push 1 to the stack and switch stacks
  25*   # Push 10 to the stack
     $  # Push every number in the inclusive range on the top of inactive stack and top of active stack ([1,2,3,4,5,6,7,8,9,10])
      : # Print the stack, which is a list containing the numbers.

6

PowerShell, 5 byte

1..10

Tạo một phạm vi động với ..toán tử từ 1đến 10, sau đó mảng đó được để lại trên đường ống. Đầu ra là ẩn. .ToString()Phương thức mặc định của một mảng là dòng mới, vì vậy đây sẽ là dòng mới được phân tách khi chạy trong một vỏ sạch.


6

Java 7, 53 51 52 byte (vòng lặp)

void l(){for(int i=0;++i<11;)System.out.println(i);}

51 byte thay thế (mã hóa cứng ngắn hơn .., nhưng được coi là lỗ hổng mặc định , vì vậy không được phép):

void h(){System.out.print("1 2 3 4 5 6 7 8 9 10");}

Thay thế 54 byte (đệ quy):

int i=1;void r(){System.out.println(i);if(i++<10)r();}

Mã thử nghiệm & mã hóa cho cả ba:

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

class Main{
  static void h(){
    System.out.print("1 2 3 4 5 6 7 8 9 10");
  }      

  static void l(){
    for(int i=0; ++i < 11;){
      System.out.println(i);
    }
  }

  static int i = 1;
  static void r(){
    System.out.println(i);
    if(i++ < 10){
      r();
    }
  }

  public static void main(String[] a){
    h();
    System.out.println();
    l();
    System.out.println();
    r();
  }
}

EDIT: Đối với các trò vui: Như được chỉ ra chính xác bởi @SkippyLeGrandGourou , cơ sở của 1 đến 10 không được chỉ định trong câu hỏi, do đó, đây là mã Java (không được đánh gôn) tạo ra 1 đến 10 trong các cơ sở 2 đến 10:

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

BASE-2: 1 10 
BASE-3: 1 2 10 
BASE-4: 1 2 3 10 
BASE-5: 1 2 3 4 10 
BASE-6: 1 2 3 4 5 10 
BASE-7: 1 2 3 4 5 6 10 
BASE-8: 1 2 3 4 5 6 7 10 
BASE-9: 1 2 3 4 5 6 7 8 10 
BASE-10: 1 2 3 4 5 6 7 8 9 10 

Vòng lặp có thể for(int i=1;i<11;)System.out.println(i++), tiết kiệm một byte.
Clashsoft

@ zyabin101 Thay đổi thứ tự để câu trả lời được mã hóa cứng là không cạnh tranh. Tuy nhiên, vẫn để lại câu trả lời, vì nó khá buồn cười (và buồn) rằng mã hóa cứng là cách ngắn nhất để in 1-10 trong Java 7 ..
Kevin Cruijssen 21/07/2016

2
@ zyabin101 Ngoại trừ khi câu hỏi được gắn thẻ độ phức tạp kolmogorov .
Neil

@Neil ơi, đúng rồi. o_o
user48538

1
Java 8 là người chiến thắng rõ ràng ở đây nhờ lambdas! ()->java.util.stream.IntStream.range(1,11).forEach(System.out::println). Tại sao bạn nói nó dài hơn? Đó là Java 8 ... Java 8 ngắn hơn theo mặc định! Tôi thậm chí đã không đặt niềng răng trước và sau khi mã! Tôi thậm chí có thể đếm đến 98 mà không cần thêm một nhân vật nào! Xem? Quy tắc Java 8!
Olivier Grégoire

6

Perl 6, 12 byte

say @(1..10)

Các @()là cần thiết để chuyển đổi sang một mảng

Giải pháp thay thế:

say @(^10+1)

Xây dựng một phạm vi [0,10) sau đó thêm một phạm vi, sau đó chuyển đổi thành một mảng.


Đối với Perl 5.10, 14 byte và gần giống như của bạn:say for(1..10)
Paul Picard

@PaulPicard hãy đăng nó! Perl 5 là một ngôn ngữ khác nhau.
Ven

Bạn có thể loại bỏ không gian cho say@(1..10)?
Cyoce

@Cyoce than ôi không, đó là một lỗi.
Ven

5

Python2 - 19 17 byte

print range(1,11)

Đã lưu 1 byte, nhờ KevinLau - không phải Kenny !

Đầu ra: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


Sử dụng rangethay vì xrange, giả sử Python 2. Trên thực tế, phiên bản hiện tại này dường như không hoạt động trên máy của tôi ở cả phiên bản Python.
Mực giá trị

@ KevinLau-notKenny Tôi có thể đã thề rằng tôi đã thử nó và không có gì để STDOUT. Cảm ơn!
Yytsi

Quan trọng: Chỉ có Python 2
Mega Man

1
@ABcDexter Tôi đã kiểm tra rồi, rất hay! Lý do tôi không sử dụng Python3 là vì tôi buộc phải bỏ rangeđối tượng trả về một trình vòng lặp vào danh sách.
Yytsi

1
@TuukkaX Vâng, chính xác. Tôi cũng sẽ thử một số ngôn ngữ khác. Cảm ơn :).
ABcDexter

5

Vim, 12 byte

i1<Esc>qqYp<C-a>q8@q

Đầu ra

1
2
3
4
5
6
7
8
9
10

Giải trình:

i1<Esc>qqYp<C-a>q8@qZZ
       qqYp<C-a>q      -- Macro q: duplicate line and increment (6)
i1<Esc>                -- Insert 1 (3)
                 8@q   -- Run macro q 8 times (3)

Đã thử nghiệm trên Neovim 0.1.4, theo hiểu biết của tôi là tương thích với tổ hợp phím với Vim.


Đẹp. Tôi nghĩ ra iYp<C-v><C-a>1<Esc>d^9@-ZZ. Cùng một số byte.
Primo



4

Groovy, 11 ký tự

print 1..10

Chạy mẫu:

bash-4.3$ groovy -e 'print 1..10'
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4

JavaScript, 25 24 byte

for(i=1;i<11;)alert(i++)

1
Chào mừng đến với PPCG! Tôi nghĩ bạn có thể tiết kiệm một byte bằng cách thực hiện alert(i++)(và loại bỏ cái kia i++).
Martin Ender

Quá tệ, câu hỏi quy định rằng thứ tự phải tăng dần, nếu không bạn có thể đã lưu một byte bằng cách sử dụng vòng lặp giảm dần thay vì vòng lặp for như vậy i=10;while(i)alert(i--).
kamoroso94

Không phải mã phải được nhúng trong một chức năng?
ericw31415

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.