Số hiển thị thiếu 2


22

Hiển thị số từ một đến một trăm (theo thứ tự tăng dần), nhưng số 2 không nên xuất hiện ở bất cứ đâu trong chuỗi. Vì vậy, ví dụ, các số hai ( 2) hoặc hai mươi ba ( 23) không nên có trong chuỗi.

Dưới đây là một ví dụ đầu ra, với các dòng mới phân tách các số:

1
3
4
5
6
7
8
9
10
11
13
14
15
16
17
18
19
30
31
33
34
35
36
37
38
39
40
41
43
44
45
46
47
48
49
50
51
53
54
55
56
57
58
59
60
61
63
64
65
66
67
68
69
70
71
73
74
75
76
77
78
79
80
81
83
84
85
86
87
88
89
90
91
93
94
95
96
97
98
99
100

7
Tôi giả sử tiêu chí chiến thắng là code-golf phải không?
Luis felipe De jesus Munoz

4
Trang web của chúng tôi không hoạt động giống như các trang web khác từ mạng Stack Exchange. Về câu trả lời được chấp nhận, xin vui lòng đưa nhận xét này từ Jonathan Allan . Và xin vui lòng thêm một tiêu chí chiến thắng.
Arnauld

1
Tôi có thể đề xuất sử dụng Sandbox trong tương lai để nhận phản hồi về các thách thức của bạn trước khi đăng không?
Jo King

1
@Monolica Nếu câu trả lời ngắn nhất thắng, bạn sẽ cần thẻ [code-golf]. Dưới đây là danh sách cho tất cả các thẻ tiêu chí chiến thắng có sẵn để tham khảo trong tương lai.
Kevin Cruijssen

4
@ user202729 Hạn chế tùy tiện là không mong muốn, không được phép.
Jonathan Frech

Câu trả lời:



26

Taxi , 2399 2391 2370 1783 1773 1706 byte

-8 byte để nhận ra rằng, thay vì để một hành khách nào đó ở Công viên Sunny Side mãi mãi, việc ném họ ra khỏi Cầu Riverview sẽ đáng giá hơn. Ah, thật là một thị trấn đáng yêu

-21 byte để lấy ra một bình luận tôi ngu ngốc để lại.

-587 byte bằng cách thay đổi toàn bộ cách tôi đã thực hiện điều này (rõ ràng cách ngắn hơn là bằng số học; chia số nguyên [17, 27, 37, 47, ...] cho 9 tạo ra chuỗi, nhưng bạn phải bỏ qua 20 mình.)

-17 byte để nhận ra rằng bất kỳ chuỗi có dấu ngoặc kép nào không có dấu cách đều không cần dấu ngoặc kép (cảm ơn Jo King!).

-67 byte để nhận ra rằng ngắt dòng là tùy chọn.

17 is waiting at Starchild Numerology.Go to Starchild Numerology:w 1 l 2 r 1 l 1 l 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.[B]Pickup a passenger going to Cyclone.Pickup a passenger going to Divide and Conquer.9 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:e 1 l 2 r 3 r 2 r 1 r.Pickup a passenger going to Trunkers.Go to Trunkers:e 1 r 3 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:e 1 r 1 r.Pickup a passenger going to Post Office.\n is waiting at Writer's Depot.Go to Writer's Depot:n 5 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.Go to Cyclone:s 1 r 1 l 2 r.Pickup a passenger going to Addition Alley.Pickup a passenger going to Equal's Corner.177 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan C if no one is waiting.Pickup a passenger going to Sunny Skies Park.100 is waiting at Starchild Numerology.Switch to plan D.[C]10 is waiting at Starchild Numerology.[D]Go to Starchild Numerology:n 1 r.Pickup a passenger going to Addition Alley.Go to Sunny Skies Park:w 1 r.Go to Addition Alley:n 1 r 1 r 1 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 1 l.Pickup a passenger going to Cyclone.Pickup a passenger going to Equal's Corner.917 is waiting at Starchild Numerology.Go to Starchild Numerology:s 2 l 2 r.Pickup a passenger going to Equal's Corner.Go to Equal's Corner:w 1 l.Switch to plan E if no one is waiting.Switch to plan F.[E]Go to Go More:n 1 l.Go to Cyclone:w 1 r.Switch to plan B.[F]

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

Điều này sẽ không thắng tôi bất kỳ cuộc thi golf mã nào sớm, nhưng tôi quyết định thử Taxi esolang.

Taxi là một esolang trong đó tất cả các chương trình được thực hiện bằng cách đón và trả khách tại các điểm dừng khác nhau trong thị trấn hư cấu của Townsburg. Tất nhiên, taxi của bạn đôi khi sẽ hết xăng, vì vậy bạn cũng cần thường xuyên ghé thăm các trạm xăng và thanh toán bằng các khoản tín dụng bạn nhận được dưới dạng giá vé (trong trường hợp này, tôi chỉ cần dừng lại để mua xăng - tại Go More - một lần trên mỗi vòng lặp!).

Tôi đã sử dụng một số thủ thuật làm giảm kích thước tệp một chút, chẳng hạn như định hướng lại east 1st left, 2nd rightnhư e 1 l 2 r, loại bỏ từ theđó là tùy chọn và sử dụng tuyến đường ít phức tạp nhất tới tất cả các điểm đến của tôi (không nhất thiết là con đường ngắn nhất).

Tôi ghét giải pháp ngắn hơn này so với giải pháp ban đầu tôi nghĩ ra. Giải pháp này ở đây là một cách tổng quát hơn để hoàn thành nhiệm vụ, có thể bắt đầu và kết thúc ở bất cứ đâu bạn muốn. Đây là, trong toàn bộ của nó.

2245 byte (cách tổng quát hơn)

1 is waiting at Starchild Numerology.Go to Starchild Numerology:w 1 l 2 r 1 l 1 l 2 l.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.[B]Pickup a passenger going to Addition Alley.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:n 2 r 2 r.Pickup a passenger going to Cyclone.Go to Cyclone:n 5 l 2 l.Pickup a passenger going to Chop Suey.Go to Zoom Zoom:n.0 is waiting at Writer's Depot.Go to Writer's Depot:w.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 3 r 1 l 1 r.Go to Chop Suey:e 1 r 1 l 1 r.[C]Switch to plan E if no one is waiting.Pickup a passenger going to Crime Lab.2 is waiting at Writer's Depot.Go to Writer's Depot:n 1 l 3 l.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 3 r 2 r.Switch to plan D if no one is waiting.Pickup a passenger going to KonKat's.Go to Narrow Path Park:n 5 l.Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 2 l.Go to Chop Suey:e 1 r 1 l 1 r.Switch to plan C.[D]Go to Chop Suey:n 5 r 1 l.Switch to plan C.[E]Go to Narrow Path Park:n 1 l 1 r 1 l.Pickup a passenger going to Crime Lab.0 is waiting at Writer's Depot.Go to Writer's Depot:w 1 l 1 r 2 l.1 is waiting at Starchild Numerology.Pickup a passenger going to Crime Lab.Go to Crime Lab:n 3 r 2 r.Switch to plan F if no one is waiting.Pickup a passenger going to Riverview Bridge.Go to Cyclone:n 4 l 2 l.Pickup a passenger going to Post Office.Go to Riverview Bridge:n 2 r.\n is waiting at Writer's Depot.Go to Writer's Depot:w 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.Go to Starchild Numerology:s 1 r 1 l 1 l 2 l.Switch to plan G.[F]Go to Cyclone:s 1 r 1 l 2 r.Pickup a passenger going to Riverview Bridge.Go to Riverview Bridge:n 2 r.Go to Starchild Numerology:w 2 l 3 l 2 r.[G]Pickup a passenger going to Addition Alley.Go to Addition Alley:e 1 l 2 r 3 r 1 r.Pickup a passenger going to Magic Eight.101 is waiting at Starchild Numerology.Go to Starchild Numerology:n 1 l 1 l 3 l 2 r.Pickup a passenger going to Magic Eight.Go to Magic Eight:w 1 r 2 r 1 r.Switch to plan H if no one is waiting.Pickup a passenger going to Cyclone.Go to Cyclone:n 1 l 2 r.Switch to plan B.[H]

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

Và nếu gian lận lớn được cho phép, thì cái này ngắn hơn một trong hai cái cuối cùng.

456 byte (hoàn toàn gian lận)

1\n3\n4\n5\n6\n7\n8\n9\n10\n11\n13\n14\n15\n16\n17\n18\n19\n30\n31\n33\n34\n35\n36\n37\n38\n39\n40\n41\n43\n44\n45\n46\n47\n48\n49\n50\n51\n53\n54\n55\n56\n57\n58\n59\n60\n61\n63\n64\n65\n66\n67\n68\n69\n70\n71\n73\n74\n75\n76\n77\n78\n79\n80\n81\n83\n84\n85\n86\n87\n88\n89\n90\n91\n93\n94\n95\n96\n97\n98\n99\n100 is waiting at Writer's Depot.Go to Writer's Depot:w 1 l 2 r 1 l 2 l.Pickup a passenger going to Post Office.Go to Post Office:n 1 r 2 r 1 l.

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


Điều đó trích dẫn là một điều hữu ích, cảm ơn. Tuy nhiên, tôi không đồng ý với điều "không cần phải đến Taxi Garage". Là thoát với một lỗi được phép? Tôi không thể tìm thấy một bộ quy tắc chung về điều này.
JosiahRyanW

Vâng, nói chung STDERR bị bỏ qua. Meta có liên quan
Jo King

Một số câu trả lời của tôi có thể được hưởng lợi từ đó.
JosiahRyanW

22

Python 2 , 39 byte

k=7
exec"k+=10;print(k>177)*10+k/9;"*81

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

Chỉ sử dụng các phép toán số học để tạo số mà không có 2.

Giá trị ktuân theo tiến trình số học 17, 27, 37, 47, ..., khi chia sàn cho 9 sẽ 1,3,4,5,6,7,8,9,10,11,13,14,...tính các số không kết thúc bằng 2. Để bỏ qua 20 đến 29, các đầu ra được tăng thêm 10 vượt qua một ngưỡng nhất định.


14

JavaScript (ES6), 43 byte

Trả về chuỗi dưới dạng một chuỗi được phân tách bằng dấu phẩy.

f=(n=98)=>n?f(n-=n-27?n%10?1:2:11)+[,n+3]:1

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

Tại sao làm theo cách này?

Chúng tôi có thể lặp lại từ 1 đến 100 và kiểm tra từng số /2/.test(n), đây là một tuyên bố khá súc tích. Nhưng trong kịch bản này, chúng ta sẽ phải xử lý các mục trống với một cái gì đó giống như (/2/.test(n)?'':...), thêm một vài byte.

Ví dụ, điều này sẽ làm việc cho 45 byte :

f=(n=1)=>n>99?n:(/2/.test(n)?'':[n,,])+f(n+1)

Hoặc điều này sẽ làm việc cho 44 byte , nếu dấu phẩy hàng đầu được chấp nhận:

f=(n=100)=>n?f(n-1)+(/2/.test(n)?'':[,n]):''

Tất cả trong tất cả (và cho đến khi được chứng minh khác), hóa ra là ngắn hơn để bỏ qua ngay lập tức tất cả các giá trị của n có chứa 2 .

Đã bình luận

f =                 // f is a recursive function taking:
(n = 98) =>         // n = counter, initialized to 98
  n ?               // if n is not equal to 0:
    f(              //   prepend the result of a recursive call:
      n -=          //     update n:
        n - 27 ?    //       if n is not equal to 27:
          n % 10 ?  //         if n is not a multiple of 10:
            1       //           subtract 1 from n
          :         //         else:
            2       //           subtract 2 from n
        :           //       else (n = 27):
          11        //         subtract 11 from n (--> 16)
    ) +             //   end of recursive call
    [, n + 3]       //   append a comma, followed by n + 3; notice that this is the value
                    //   of n *after* it was updated for the recursive call; at the first
                    //   iteration, we have: n = 98 -> updated to 97 -> n + 3 = 100
  :                 // else (n = 0):
    1               //   output the first term '1' and stop recursion

1
Điều này thật tuyệt!
Emigna

1
41 byte sử dụng thủ thuật của bạn nếu chúng ta có thể có dấu phẩy hàng đầu.
Oliver

12

R , 19 byte

grep(2,1:100,inv=T)

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


grep(2,1:100,inv=T)cho 19.
J.Doe

2
Ha - đây là những gì tôi đã cố gắng lúc đầu nhưng v=Fcũng vì rõ ràng, tôi tự nghĩ, tôi muốn các giá trị chứ không phải các chỉ số ... duh!
ngm

Đảo ngược chính regex là một byte ngắn hơn (trong trường hợp này).
ngm

Không hoạt động, vẫn để quá khứ 2 giây. Bạn sẽ cần ^[^2]*$đó là, ừm, không ngắn hơn.
J.Doe

4
Cái gì, chúng ta phải kiểm tra câu trả lời của chúng tôi bây giờ?
ngm


10

Perl 6 , 22 byte

put grep {!/2/},1..100

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

Có lẽ có một cách tốt hơn để thực hiện khối mã, nhưng tôi không thể tìm thấy trạng từ regex để đảo ngược trận đấu


loại bỏ các dấu ngoặc quanh các con số. Nếu không thì tốt.
Monolica

@Monolica Đã sửa
Jo King

1
@Monolica Có vẻ hơi lạ khi bạn chỉ ra câu trả lời của tôi là không được phép in dưới dạng danh sách, trong đó rất nhiều câu trả lời khác làm như vậy. Mặt khác, nó không làm tôi tốn bất kỳ byte nào, vì vậy dù gì đi nữa
Jo King

7

PowerShell , 22 16 byte

1..100-notmatch2

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

-6 byte nhờ mazzy

Tạo ra phạm vi 1đến 100, sau đó rút ra những đối tượng mà họ làm -notmatchsố 2. Chạy -notmatchvới một mảng như thế này hoạt động như một bộ lọc trên mảng. Mỗi mục được để lại trên đường ống và đầu ra là ẩn.


? 1..100-notmatch2
mê mẩn

@mazzy Tất nhiên, tại sao tôi không nghĩ về điều đó? Cảm ơn!
admBorkBork

6

Haskell , 48 33 31 byte

Cảm ơn @JonathanFrech đã lưu mười lăm byte và @xnor cho hai cái khác! Tôi đã bỏ lỡ một sân golf lớn và không nhận ra main=print$có thể bỏ qua.

filter(all(/='2').show)[1..100]

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

Dễ dàng mở rộng bằng cách thay đổi 100. Chuỗi tất cả các số và chỉ giữ những số không có a '2'.


Xem cái này ; các main=print$là không cần thiết. Bạn đã kiểm tra mã của bạn? Tôi không nghĩ đó elem'2'là cú pháp hợp lệ. Tại sao map? Đơn giản chỉ cần filter(not.elem '2'.show)[1..100]làm công việc.
Jonathan Frech

@JonathanFrech Wow, đã bỏ lỡ điều đó. : / Không có manh mối nơi không gian đó đã đi! Nó ở đó trong TIO ...
Khuldraeseth na'Barya

2
Haskell đã notElemcho not.elem, nhưng thậm chí ngắn hơn là all(/='2').
xnor



5

Java 10, 67 byte

v->{for(int i=0;++i<101;)if(i%10!=2&i/10!=2)System.out.println(i);}

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

Giải trình:

v->{                           // Method with empty unused parameter and no return-type
  for(int i=0;++i<101;)        //  Loop `i` in the range (0, 101)
    if(i%10!=2                 //   If `i` modulo-10 is not 2
       &i/10!=2)               //   And `i` integer-divided by 10 is not 2 either
      System.out.println(i);}  //    Print `i` with a trailing newline

5

Võng mạc , 19 17 byte


100*
.
$.>`¶
A`2

Hãy thử trực tuyến! Chỉnh sửa: Đã lưu 2 byte nhờ @ovs, mặc dù dòng cuối cùng hiện bao gồm một dòng mới. Giải trình:


100*

Chèn 100 ký tự.

.
$.>`¶

Thay thế mỗi ký tự bằng số lượng ký tự lên đến và bao gồm ký tự đó, cộng với một dòng mới.

A`2

Xóa tất cả các mục có chứa a 2.


. $.>`¶làm việc cho giai đoạn thứ hai?
trứng

@ovs Tôi đã có một cái gì đó phức tạp hơn trước đây và chuyển sang để L$tránh một dòng mới hàng đầu, vì vậy tôi đã không nhận ra rằng tôi có thể chuyển trở lại, cảm ơn.
Neil

4

Stax , 6 byte

Ç░τ╒╜h

Chạy và gỡ lỗi nó

Giải nén, không được chỉnh sửa, và nhận xét, nó trông như thế này.

AJ  10 squared
f   output each value in [1 .. n] satisfying the following filter
 E  get array of decimal digits in number
 2#     count the number of 2s
 !  logical not

Chạy cái này


4

Ngôn ngữ Wolfram (Mathicala) , 42 byte

Print@⌈Range[1,100,10/9]~Drop~{18,26}⌉

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

Chuỗi số học 1, 19/9, 29/9, 39/9, ... tăng trưởng với tốc độ phù hợp, lấy trần bỏ qua tất cả các số kết thúc bằng 2. Sau đó, chúng ta thoát khỏi 20 đến 29 bằng cách Dropping các giá trị tại các chỉ số 18 đến 26.


Tôi không biết liệu sự đồng thuận Printcó cần thiết hay không, nhưng dù sao thì ai cũng thực sự quan tâm.
Misha Lavrov

[...] Nhưng dù sao thì ai cũng quan tâm. - đó là tinh thần ...
Jonathan Frech

Làm \[LeftCeiling]\[RightCeiling]thực sự được tính là một byte đơn :)
user6014

@ user6014 Tôi đang tính chúng là 3 byte mà chúng chiếm bằng Unicode, nhưng nó vẫn rẻ hơn một chút so với một Ceilinglệnh thực tế .
Misha Lavrov

@MishaLavrov Âm thanh công bằng! Giải pháp gọn gàng.
user6014


4

Powershell, 19 byte

1..100-split'.*2.*'

Tập lệnh này hiển thị giá trị null thay vì 'số có 2 bên trong' và giải quyết hoàn toàn nhiệm vụ 'số 2 không nên xuất hiện ở bất kỳ đâu trong chuỗi'.

Đầu ra:

1


3
4
5
6
7
8
9
10
11


13
14
15
16
17
18
19




















30
31


33
34
35
36
37
38
39
40
41


43
44
45
46
47
48
49
50
51


53
54
55
56
57
58
59
60
61


63
64
65
66
67
68
69
70
71


73
74
75
76
77
78
79
80
81


83
84
85
86
87
88
89
90
91


93
94
95
96
97
98
99
100

Powerhsell (đầu ra không chứa giá trị null), 24 byte

1..100-split'.*2.*'-ne''

4

sh + coreutils, 16 ký tự

seq 100|sed /2/d

Tạo chuỗi từ 1 đến 100 (đã bao gồm) và xóa bất kỳ dòng nào có '2' trong đó.


Mã này giống hệt với câu trả lời của Digital Trauma .
Ruslan

Ôi trời, không thấy cái đó, mặc dù tôi đã kiểm tra. Tôi có nên xóa cái này vì tôi đã đăng sau không?
trị liệu

4

Z80Golf , 49 48 byte

00000000: 1630 2e0a 5faf f57b fe02 2818 82ff f182  .0.._..{..(.....
00000010: ff92 3cf5 7dff f1bd 280a fe02 2803 f518  ..<.}...(...(...
00000020: e63c 18fa 7b3c bd20 db3e 31ff 3dff ff76  .<..{<. .>1.=..v

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

Hội,, tổ hợp:

ld d, 30h			; ascii '0' character
ld l, 0Ah			; number 10 and ascii newline
tens:
	ld e,a			; store tens digit
	xor a			; reset ones digit to 0
	push af			; store initial ones digit 0
	ones:
		ld a,e		; get stored tens digit
		cp 2
		jr z,cont	; if tens digit==2(e.g.20-29),skip loop
		add d
		rst 38h 	; print tens digit
		pop af		; get stored ones digit
		add d
		rst 38h 	; print ones digit
		sub d
		inc a		; increment ones digit
		push af		; store ones digit
		ld a, l
		rst 38h 	; print newline
		pop af		; get stored ones digit again
		cp l
		jr z,cont	; if ones digit==10, break loop
		cp 2
		jr z,inc_again	; if ones digit==2, incr again
		repeat_loop:
		push af		; store ones digit again
		jr ones		; repeat print loop
		inc_again:
			inc a
			jr repeat_loop
		
	cont:
	ld a,e			; get stored tens digit
	inc a			; increment tens digit
	cp l
	jr nz, tens		; if tens place!=10, continue loop
ld a,31h
rst 38h				; print '1'
dec a
rst 38h				; print '0'
rst 38h				; print '0'
halt

Đã lưu một byte với repeat_loopbước nhảy


4

Python 3 , 53 51 50 49 46 byte

['2'in str(n)or print(n)for n in range(1,101)]

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

Không phải ngôn ngữ mạnh nhất cho nhiệm vụ này, nhưng tôi mới chơi golf.

Cảm ơn các bình luận cho lời khuyên của họ!


Chào mừng đến với PPCG! Bạn có thể đưa nó xuống vòng 50 bằng cách xóa khoảng trắng trước if.
ElPedro

[print(n)for n in range(1,101)if"2"not in str(n)]công trinh.
JosiahRyanW

Ngoài ra, dựa trên một trong các câu trả lời của Python 2:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW

@JosiahRyanW Tôi không biết về bản in ngầm, cảm ơn!
Gigaflop

1
'2'in str(n)or print(n)ngắn hơn một người bảo vệ hiểu biết.
Jonathan Frech

4

Tcl , 44 byte

time {if ![regexp 2 [incr i]] {puts $i}} 100

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


Tcl , 47 byte

time {if [incr i]%10!=2&$i/10!=2 {puts $i}} 100

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

Tcl , 50 byte

time {if {2 ni [split [incr i] ""]} {puts $i}} 100

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



Bạn có thể thay thế bài kiểm tra của mình bằng regexp: ![regexp 2 [incr i]]cho -3 byte
david

@david Làm thế nào có thể tôi đã không đi kèm với giải pháp được đề xuất bởi bạn sử dụng biểu thức thông thường? Cảm ơn.
sergiol


3

Bash , 31 byte

printf %d\\n {1..100}|grep -v 2

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

Cảm ơn Digital Trauma cho vòng lặp ngắn.


1
Chào mừng đến với PPCG! Làm thế nào về echo $ithay vì printf? Hay thậm chí tốt hơn printf %d\\n {1..100}|grep -v 2?
Chấn thương kỹ thuật số

đúng rồi Tôi sẽ cập nhật câu trả lời của tôi.
ketone

Tôi đang học thực sự tôi không biết nhiều btw cảm ơn.
ketone

Chỉ cần đánh bại tôi echo {1..100}|tr ' ' \\n|grep -v 2
Mark Perryman

-1 byte nếu bạn sử dụng sed /2/dthay vì grep -v 2.
Ruslan

3

ORK , 1092 byte

There is such a thing as a t
A t can w a number
A t can d a number
A t has a t which is a number

When a t is to w a number:
I have a mathematician called M
M's first operand is the number
M's second operand is 1
M is to add
The number is M's result
My t is 0
I have a number called n
n is the number
I am to d n
M's first operand is my t
M's second operand is 1
M is to compare
I have a scribe called W
If M says it's less then W is to write the number
If M says it's less then W is to write " "
M's first operand is the number
M's second operand is 100
M is to compare
If M says it's less then I am to loop

When a t is to d a number:
I have a mathematician called M
M's first operand is the number
M's second operand is 10
M is to modulo
I have a mathematician called N
N's first operand is M's result
N's second operand is 2
N is to compare
If N says it's equal then my t is 1
M is to divide
The number is M's result
M's first operand is the number
M's second operand is 0
M is to compare
If M says it's greater then I am to loop

When this program starts:
I have a t called T
T is to w 0

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

O bjects R K OOL. Đầu ra là một danh sách các số được phân định bằng dấu cách.

Điều này dịch (khoảng) sang mã giả sau:

class t {
	int t;
	
	void w(number) {
		label T_W;
		mathematician M;
		M.first_operand = number;
		M.second_operand = 1;
		M.add();
		number = M.result;
		t = 0;
		int n = number;
		d(n);
		M.first_operand = t;
		M.second_operand = 1;
		M.compare();
		scribe W;
		if M.its_less { W.write(number); }
		if M.its_less { W.write(" "); }
		M.first_operand = number;
		M.second_operand = 100;
		M.compare();
		if M.its_less { goto T_W; }
	}
	
	void d(number) {
		label T_D;
		mathematician M;
		M.first_operand = number;
		M.second_operand = 10;
		M.modulo();
		mathematician N;
		N.first_operand = M.result;
		N.second_operand = 2;
		N.compare();
		if N.its_equal { t = 1; }
		M.divide();
		number = M.result;
		M.first_operand = number;
		M.second_operand = 0;
		M.compare();
		if M.its_greater { goto T_D; }
	}
}

void main() {
	t T;
	T.w(0);
}

Như bạn có thể thấy, mọi thứ đều được thực hiện bằng cách sử dụng các đối tượng, bao gồm các hàm toán học và IO cơ bản (thông qua các lớp toán học và ghi chép tích hợp). Chỉ toàn bộ các chức năng có thể lặp, điều này giải thích sự cần thiết của một đối tượng có hai chức năng để thực hiện công việc.




3

PHP 7.1, 40 byte

while($i++<100)strstr($i,50)||print$i._;

in số cách nhau bởi dấu gạch dưới. Chạy với -nrhoặc thử trực tuyến .


Sử dụng tốt các hành vi lập dị của PHP để phân tách các con số, lol
Roberto Maldonado

1
Một preg_filter()trong những dựa trên là thú vị. (Tôi chưa bao giờ sử dụng chức năng đó. 🤫) Cái đó sẽ ngắn hơn với preg_grep(): <?=join(_,preg_grep("/2/",range(1,100),1));.
manatwork


2

Brainfuck , 176 byte

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

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

Ngắn hơn là chắc chắn có thể. Điều này tạo ra các số 1,3,4,5,6,7,8,90,1,3,4,5,6,7,8,9. Đầu tiên, nó xuất ra mỗi số trong danh sách đầu tiên, sau đó nó xuất ra mọi kết hợp của danh sách thứ nhất và thứ hai, sau đó cuối cùng chỉ in 100.

Giải trình:

---------   Push minus 9
[           Repeat 9 times
  [-<]-[>]    Add the negative of the number to the first list
  >[>]-[-<]<  Add the negative of the number to the second list
  ++          Increment the counter
]
Tape: 255 254 253 252 251 250 249 248 247 0' 0 246 247 248 249 250 251 252 253 254
-[>-<+++++++++]>--  Push 197
Tape: 255 254 253 252 251 250 249 248 247 0 197' 246 247 248 249 250 251 252 253 254
[
  >[->]<    Subtract 197 from every element in both lists to convert to digits
  [<<<]>>
  [->]>-
]
Tape: 58 57 56 55 54 53 52 51 49 0' 49 50 51 52 53 54 55 56 57
<<,<-[-<]>[>]<  Remove the 0 and the 2 from the first list
Tape: 58 57 56 55 54 53 52 51 0 0 0' 49 50 51 52 53 54 55 56 57
[  Loop over the first list
  .[->+<]        Print digit
  ++++++++++.,<  Print a newline
]
>>[>]>>->-   Remove the 2 from the second list
<<<<      
[  Loop over first list
  >>>
  [  Loop over second list
    <<[<]<.        Print first digit
    >>[>]>.        Print second digit
    [-<+>]         Move second digit over one
    ++++++++++.,>  Print a newline
  ]
  <<[<]<,<  Remove the digit from the first list and move to the next
]
>>>>.<..  Print 100 using the second list

2

SimpleTemplate , 51 byte

Đây là một thử thách thú vị! Và đó là một thách thức mà ngôn ngữ của tôi có thể làm tốt.

{@forfrom 1to100}{@if_ is notmatches"<2>"}{@echol_}

Chuyển qua tất cả các giá trị từ 1 đến 100, xuất ra các giá trị không có 2, được phân tách bằng một dòng mới.

Bạn có thể dùng thử trên http://sandbox.onlinephpfifts.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99

Ung dung:

{@for i from 1 to 100}
    {@if i is not matches "<2>"}
        {@echo i, "\n"}
    {@/}
{@/}

Các {@/}được sử dụng để đóng {@for ...}{@if ...}, nhưng không bắt buộc.
Khi biên dịch sang PHP, nó thêm phần đóng cần thiết.


Nếu bạn tò mò, mã đánh gôn dẫn đến mã PHP này:

// {@forfrom 1to100}
// ~ optimization enabled ~ inlining the results
foreach(array(...) as $DATA['_']){

    // {@if_ is notmatches"<2>"}
    if(!(preg_match("<2>", (isset($DATA['_'])?$DATA['_']:null)))) {

        // {@echol_}
        echo implode('', $FN['array_flat']((isset($DATA['_'])?$DATA['_']:null)));echo PHP_EOL;


// AUTO-CLOSE
};};

Trường hợp $FN['array_flat']được xác định bên ngoài mã này.

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.