แสดงตัวเลขที่ขาด 2


22

แสดงตัวเลขจากหนึ่งถึงหนึ่งร้อย (ตามลำดับที่เพิ่มขึ้น) แต่หมายเลข 2 ไม่ควรปรากฏที่ใดก็ได้ตามลำดับ ตัวอย่างเช่นตัวเลขสอง ( 2) หรือยี่สิบสาม ( 23) ไม่ควรอยู่ในลำดับ

นี่คือตัวอย่างเอาต์พุตโดยมีบรรทัดใหม่คั่นตัวเลข:

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
ฉันคิดว่าเกณฑ์การชนะคือโค้ดกอล์ฟใช่มั้ย
Luis felipe De jesus Munoz

4
เว็บไซต์ของเราไม่ทำงานเช่นเดียวกับเว็บไซต์อื่น ๆ จากเครือข่าย Stack Exchange เกี่ยวกับคำตอบที่ยอมรับโปรดนำความคิดเห็นนี้จาก Jonathan Allanมาพิจารณา และโปรดเพิ่มเกณฑ์การชนะ
Arnauld

1
ฉันขอแนะนำให้ใช้Sandboxในอนาคตเพื่อรับคำติชมเกี่ยวกับความท้าทายของคุณก่อนโพสต์หรือไม่
Jo King


4
@ user202729 ข้อ จำกัด โดยพลการไม่พอใจไม่ได้รับอนุญาต
Jonathan Frech

คำตอบ:



26

แท็กซี่ , 2399 2391 2370 1783 1773 1706 ไบต์

-8 ไบต์สำหรับการรับรู้ว่าแทนที่จะปล่อยให้ผู้โดยสารบางคนที่ Sunny Side Park ตลอดไปมันจะคุ้มค่ากว่าถ้าจะโยนพวกเขาออกจากสะพาน Riverview นี่เป็นเมืองที่น่ารัก

-21 ไบต์สำหรับการแสดงความคิดเห็นฉันทิ้งไว้อย่างโง่เขลา

-587 bytes โดยเพียงแค่เปลี่ยนวิธีทั้งหมดที่ฉันไปเกี่ยวกับเรื่องนี้ (เห็นได้ชัดว่าวิธีที่สั้นกว่าคือเลขคณิตหารด้วยจำนวนเต็ม [17, 27, 37, 47, ... ] โดย 9 ให้ผลตามลำดับ แต่คุณต้องข้ามไป 20 เป็นของตัวเอง)

-17 ไบต์สำหรับการรับรู้ว่าสตริงที่มีเครื่องหมายคำพูดใด ๆ ที่ไม่มีช่องว่างไม่จำเป็นต้องมีเครื่องหมายอัญประกาศ (ขอบคุณ Jo King!)

-67 ไบต์สำหรับการรับรู้ว่าการแพร่กระจายเป็นตัวเลือก

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]

ลองออนไลน์!

อันนี้ไม่ชนะฉันการแข่งขันกอล์ฟรหัสใด ๆ เร็ว ๆ นี้ แต่ฉันตัดสินใจลอง esolang แท็กซี่

แท็กซี่เป็น esolang ที่การเขียนโปรแกรมทั้งหมดทำได้โดยยกขึ้นและส่งผู้โดยสารที่จุดหยุดต่าง ๆ ในเมืองสมมุติของ Townsburg แน่นอนว่ารถแท็กซี่ของคุณบางครั้งน้ำมันจะหมดดังนั้นคุณต้องไปที่สถานีบริการน้ำมันทุก ๆ ครั้งและชำระเงินโดยใช้เครดิตที่คุณได้รับเป็นค่าโดยสาร (ในกรณีนี้ฉันต้องหยุดใช้แก๊ส - ที่ Go More - หนึ่งครั้งต่อการวนซ้ำ!)

ผมใช้เทคนิคบางอย่างที่จะช่วยลดขนาดไฟล์บิตเช่น rephrasing ทิศทางชอบeast 1st left, 2nd rightเป็นe 1 l 2 rลบคำtheที่มันเป็นตัวเลือกและการใช้เส้นทางที่ซับซ้อนน้อยไปสู่ทุกจุดหมายของฉัน (ไม่จำเป็นต้องเป็นเส้นทางที่สั้นที่สุด)

ฉันเกลียดวิธีแก้ปัญหาที่สั้นกว่านี้มากกว่าที่ฉันคิดไว้ วิธีการแก้ปัญหาด้านล่างนี้เป็นวิธีทั่วไปในการทำงานให้สำเร็จซึ่งสามารถเริ่มต้นและสิ้นสุดได้ทุกที่ที่คุณต้องการ นี่มันคือทั้งหมด

ไบต์ 2245 (ทั่วไปมากขึ้น)

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]

ลองออนไลน์!

และหากได้รับอนุญาตการโกงขนาดใหญ่อันนี้จะสั้นกว่าทั้งสองอย่างสุดท้าย

456 ไบต์ (การโกงทั้งหมด)

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.

ลองออนไลน์!


คำพูดนั้นเป็นสิ่งที่มีประโยชน์ขอบคุณ อย่างไรก็ตามฉันไม่เห็นด้วยกับสิ่งที่ "ไม่ต้องไปโรงจอดรถแท็กซี่" อนุญาตให้ออกโดยมีข้อผิดพลาดหรือไม่ ฉันไม่พบกฎทั่วไปที่ดีเกี่ยวกับเรื่องนี้
JosiahRyanW

ใช่โดยทั่วไป STDERR จะถูกละเว้น เมตาที่เกี่ยวข้อง
โจคิง

คำตอบของฉันบางข้ออาจได้รับประโยชน์จากสิ่งนั้น
JosiahRyanW

22

Python 2 , 39 ไบต์

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

ลองออนไลน์!

ใช้การดำเนินการทางคณิตศาสตร์เท่านั้นเพื่อสร้างตัวเลขที่ไม่มี 2

ค่าจะเป็นkไปตามความก้าวหน้าทางเลขคณิต17, 27, 37, 47, ...ซึ่งเมื่อหารด้วยจำนวน 9 ให้1,3,4,5,6,7,8,9,10,11,13,14,...ซึ่งนับจำนวนไม่สิ้นสุดใน 2 เมื่อต้องการข้าม 20 ถึง 29 ผลลัพธ์จะเพิ่มขึ้น 10 โดยผ่านเกณฑ์ที่กำหนด


14

JavaScript (ES6), 43 ไบต์

ส่งคืนลำดับเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาค

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

ลองออนไลน์!

ทำไมทำอย่างนี้

เราสามารถทำซ้ำได้ตั้งแต่1ถึง100และทดสอบแต่ละหมายเลขด้วย/2/.test(n)ซึ่งเป็นข้อความที่ค่อนข้างกระชับ แต่ในสถานการณ์นี้เราจะต้องจัดการกับรายการที่ว่างเปล่าด้วยสิ่งที่คล้าย(/2/.test(n)?'':...)กันซึ่งเพิ่มไบต์อีกสองสาม

ตัวอย่างเช่นจะใช้งานได้45 ไบต์ :

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

หรืออาจใช้งานได้44 ไบต์หากเครื่องหมายจุลภาคนำหน้าเป็นที่ยอมรับ:

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

ทั้งหมด (และจนกว่าจะพิสูจน์เป็นอย่างอื่น) มันจะสั้นลงเพื่อข้ามค่าทั้งหมดของnที่มี2ทันที

แสดงความคิดเห็น

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
มันเจ๋งมาก!
Emigna

1
41 ไบต์ใช้เคล็ดลับของคุณหากเรามีเครื่องหมายจุลภาคชั้นนำ
โอลิเวอร์

12

R , 19 ไบต์

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

ลองออนไลน์!


grep(2,1:100,inv=T)สำหรับ 19.
J.Doe

2
ฮา - นี่คือสิ่งที่ฉันพยายามตอนแรก แต่ด้วยv=Fเช่นกันเพราะเห็นได้ชัดว่าฉันคิดกับตัวเองฉันต้องการค่าและไม่ใช่ดัชนี ... duh!
ngm

การแปลง regex ของตัวเองสั้นลงเป็นไบต์ (ในกรณีนี้)
ngm

ใช้งานไม่ได้ แต่ยังปล่อยให้ผ่านไป 2 วินาที คุณต้องการ^[^2]*$ซึ่งก็คืออืมไม่สั้น
J.Doe

4
เราควรจะตรวจสอบคำตอบของเราตอนนี้?
ngm


10

Perl 6 , 22 ไบต์

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

ลองออนไลน์!

อาจเป็นวิธีที่ดีกว่าในการทำบล็อคโค้ด แต่ฉันไม่พบ adverb ของ regex เพื่อพลิกการจับคู่


ลบวงเล็บรอบตัวเลข ไม่งั้นมันก็โอเค
Monolica

@Monolica Fixed
Jo King

1
@Monolica ดูเหมือนแปลกเล็กน้อยที่คุณแยกคำตอบของฉันออกจากที่ไม่ได้รับอนุญาตให้พิมพ์เป็นรายการซึ่งมีคำตอบอื่น ๆ ให้ทำเช่นนั้น ในทางกลับกันมันไม่เสียค่าใช้จ่ายไบต์ใด ๆ ดังนั้นสิ่งที่
Jo King

7

PowerShell , 22 16 ไบต์

1..100-notmatch2

ลองออนไลน์!

-6 ไบต์ต้องขอบคุณเขาวงกต

สร้างช่วง1ไป100แล้วดึงออกวัตถุเหล่านั้นที่พวกเขาทำจำนวน-notmatch 2การเรียกใช้อาเรย์-notmatchกับอาเรย์แบบนี้จะทำหน้าที่เหมือนฟิลเตอร์ในอาเรย์ แต่ละรายการจะถูกทิ้งไว้บนไปป์ไลน์และเอาท์พุทก็เป็นนัย


? 1..100-notmatch2
mazzy

@mazzy แน่นอนทำไมฉันไม่คิดอย่างนั้นล่ะ ขอบคุณ!
AdmBorkBork

6

Haskell , 48 33 31 ไบต์

ขอบคุณ @JonathanFrech สำหรับการบันทึกสิบห้าไบต์และ @xnor สำหรับอีกสอง! ฉันพลาดสนามกอล์ฟขนาดใหญ่และไม่ทราบว่าmain=print$สามารถตัดออกได้

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

ลองออนไลน์!

100ขยายได้อย่างง่ายดายโดยการเปลี่ยน Stringifies '2'ตัวเลขทั้งหมดและช่วยให้เฉพาะผู้ที่ไม่มี


เห็นนี้ ; main=print$ไม่จำเป็น คุณทดสอบโค้ดแล้วหรือยัง ฉันไม่คิดว่าelem'2'เป็นไวยากรณ์ที่ถูกต้อง ทำไมmap? เพียงแค่filter(not.elem '2'.show)[1..100]ไม่ทำงาน
Jonathan Frech

@ JonathanFrech ว้าวพลาดไป : / ไม่มีเงื่อนงำที่ว่างนั้นไป! มีอยู่ใน TIO ...
Khuldraeseth na'Barya

2
Haskell มีnotElemสำหรับแต่แม้สั้นมีnot.elem all(/='2')
xnor



5

Java 10, 67 ไบต์

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

ลองออนไลน์

คำอธิบาย:

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

เรติน่า , 19 17 ไบต์


100*
.
$.>`¶
A`2

ลองออนไลน์! แก้ไข: บันทึก 2 ไบต์ขอบคุณ @ovs แม้ว่าบรรทัดสุดท้ายจะมีบรรทัดใหม่ คำอธิบาย:


100*

แทรก 100 อักขระ

.
$.>`¶

แทนที่อักขระแต่ละตัวด้วยจำนวนอักขระสูงสุดและรวมถึงอักขระนั้นบวกกับขึ้นบรรทัดใหม่

A`2

2นำรายการทั้งหมดที่มี


ไม่. $.>`¶ทำงานสำหรับขั้นตอนที่สอง?
ovs

@ovs ฉันมีอะไรที่ซับซ้อนกว่านี้มาก่อนและเปลี่ยนเป็นL$เพื่อหลีกเลี่ยงการขึ้นบรรทัดใหม่ชั้นนำดังนั้นฉันจึงไม่ได้ตระหนักว่าฉันสามารถเปลี่ยนกลับได้ขอบคุณ
Neil

4

Stax , 6 ไบต์

Ç░τ╒╜h

เรียกใช้และแก้ไขข้อบกพร่อง

คลายกล่อง ungolfed และแสดงความคิดเห็นมันมีลักษณะเช่นนี้

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

เรียกใช้อันนี้


4

ภาษา Wolfram (Mathematica) , 42 ไบต์

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

ลองออนไลน์!

ลำดับเลขคณิต 1, 19/9, 29/9, 39/9, ... เติบโตในอัตราที่เหมาะสมที่การเอาเพดานข้ามตัวเลขทั้งหมดที่ลงท้ายด้วย 2 แล้วเรากำจัด 20 ถึง 29 โดยDropping ค่า ที่ดัชนี 18 ถึง 26


ฉันไม่รู้ว่าฉันทามติPrintเป็นสิ่งจำเป็นหรือไม่ แต่ใครสนใจจริง ๆ
Misha Lavrov

[... ] แต่ใครที่สนใจจริงๆ - นั่นคือจิตวิญญาณ ...
Jonathan Frech

ทำ\[LeftCeiling]และ\[RightCeiling]นับเป็นไบต์เดียวจริงๆ :)
user6014

@ user6014 ฉันนับพวกเขาเป็น 3 ไบต์ที่ใช้ใน Unicode แต่ก็ยังถูกกว่าCeilingคำสั่งจริงเล็กน้อย
Misha Lavrov

@MishaLavrov ฟังดูยุติธรรม! วิธีแก้ปัญหาเรียบร้อย
user6014

4

C (GCC) , 62 55 ไบต์

• 7 ไบต์ขอบคุณ Jonathan Frech

f(n){for(n=0;++n-101;n/10-2&&n%10-2&&printf("%d,",n));}

ลูปจาก 1 ถึง 100 และพิมพ์ตัวเลขเฉพาะเมื่อ 2 ไม่ได้อยู่ในตำแหน่งหรือหลักสิบ

ลองออนไลน์!


1
55 ไบต์
Jonathan Frech

@ JonathanFrech ขอบคุณที่ฉลาด!
Asleepace

4

Powershell, 19 ไบต์

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

สคริปต์นี้แสดงค่า Null แทนที่จะเป็น 'ตัวเลขที่มี 2 ข้างใน' และแก้ปัญหาอย่างสมบูรณ์ 'หมายเลข 2 ไม่ควรปรากฏที่ใดก็ได้ในลำดับ'

เอาท์พุท:

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 (เอาต์พุตไม่มีค่า null), 24 ไบต์

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

4

sh + coreutils, 16 ตัวอักษร

seq 100|sed /2/d

สร้างลำดับจาก 1 ถึง 100 (รวม) และลบบรรทัดใด ๆ ที่มี '2' อยู่ในนั้น


รหัสนี้จะเหมือนกับตอบโดยดิจิตอลบาดเจ็บ
Ruslan

โอ้อึไม่เห็นอันนั้นแม้ว่าฉันจะตรวจสอบแล้ว ฉันควรลบสิ่งนี้ตั้งแต่มีการโพสต์ของฉันในภายหลังหรือไม่
therealfarfetchd

4

Z80Golf , 49 48 ไบต์

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

ลองออนไลน์!

สภา:

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

บันทึกหนึ่งไบต์ด้วยการrepeat_loopกระโดด


4

Python 3 , 53 51 50 49 46 ไบต์

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

ลองออนไลน์!

ไม่ใช่ภาษาที่แข็งแกร่งที่สุดสำหรับงานนี้ แต่ฉันใหม่กับการเล่นกอล์ฟ

ขอบคุณผู้แสดงความคิดเห็นสำหรับเคล็ดลับของพวกเขา!


ยินดีต้อนรับสู่ PPCG! คุณจะได้รับมันลงไปรอบ 50 ifโดยการลบพื้นที่ก่อน
ElPedro

[print(n)for n in range(1,101)if"2"not in str(n)]โรงงาน
JosiahRyanW

อีกวิธีหนึ่งขึ้นอยู่กับหนึ่งในคำตอบของ Python 2:n=17;exec("print((n>177)*10+n//9);n+=10;"*81)
JosiahRyanW

@JosiahRyanW ฉันไม่ได้ตระหนักถึงการพิมพ์โดยนัยขอบคุณ!
Gigaflop

1
'2'in str(n)or print(n)สั้นกว่าตัวป้องกันความเข้าใจ
Jonathan Frech

4

Tcl , 44 ไบต์

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

ลองออนไลน์!


Tcl , 47 ไบต์

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

ลองออนไลน์!

Tcl , 50 ไบต์

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

ลองออนไลน์!


# Tcl , 49 bytes time {if [string f 2 [incr i]]==-1 {puts $i}} 100 - outgolf ไม่สำเร็จ!
sergiol

คุณสามารถแทนที่การทดสอบของคุณด้วย a regexp: ![regexp 2 [incr i]]สำหรับ -3 bytes
david

@david เป็นไปได้อย่างไรที่ฉันไม่ได้ใช้วิธีแก้ปัญหาที่คุณแนะนำโดยใช้นิพจน์ทั่วไป ขอบคุณ
sergiol


3

Bash , 31 ไบต์

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

ลองออนไลน์!

ขอบคุณ Digital Trauma สำหรับการวนซ้ำแบบสั้น


1
ยินดีต้อนรับสู่ PPCG! แล้วecho $iแทนที่จะใช้ printf ล่ะ? หรือดียิ่งขึ้นprintf %d\\n {1..100}|grep -v 2?
Digital Trauma

ช่ายยย. ฉันจะอัปเดตคำตอบของฉัน
คีโตน

ฉันเรียนรู้จริง ๆ แล้วฉันไม่ทราบว่าขอบคุณมาก
คีโตน

เพียงแค่เต้นของฉันecho {1..100}|tr ' ' \\n|grep -v 2
Mark Perryman

-1 ไบต์ถ้าคุณใช้แทนsed /2/d grep -v 2
Ruslan

3

ORK , 1092 ไบต์

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

ลองออนไลน์!

O bjects R K OOL เอาต์พุตเป็นรายการตัวเลขคั่นด้วยช่องว่าง

สิ่งนี้แปล (โดยประมาณ) เป็น pseudocode ต่อไปนี้:

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

อย่างที่คุณเห็นทุกอย่างทำได้โดยใช้วัตถุรวมถึงฟังก์ชั่นพื้นฐานทางคณิตศาสตร์และ IO (ผ่านวิชาคณิตศาสตร์และวิชานักเขียน) มีเพียงฟังก์ชันทั้งหมดเท่านั้นที่สามารถวนซ้ำได้ซึ่งจะอธิบายความต้องการของวัตถุที่มีสองฟังก์ชันในการทำงาน




3

PHP 7.1, 40 ไบต์

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

พิมพ์ตัวเลขคั่นด้วยเครื่องหมายขีดล่าง ทำงานด้วย-nrหรือลองออนไลน์


ใช้ประโยชน์จากพฤติกรรมที่แปลกประหลาดของ PHP เพื่อแยกตัวเลขฮ่า ๆ
Roberto Maldonado

1
สิ่งที่preg_filter()น่าสนใจ (ผมไม่เคยใช้ฟังก์ชั่นที่🤫.) ที่หนึ่งจะสั้นลงด้วย:preg_grep() <?=join(_,preg_grep("/2/",range(1,100),1));
จัดการ


2

brainfuck , 176 ไบต์

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

ลองออนไลน์!

สั้นกว่าแน่นอน สิ่งนี้สร้างตัวเลข1,3,4,5,6,7,8,9และ0,1,3,4,5,6,7,8,9และก่อนอื่นมันจะออกแต่ละหมายเลขในรายการแรกจากนั้นก็จะส่งออกทุกรายการของรายการแรกและรายการที่สองจากนั้นก็พิมพ์ออกมาในที่สุด100ครั้งแรกมันจะออกผลลัพธ์จำนวนในรายการแรกของแต่ละแล้วมันจะออกผลลัพธ์การรวมกันของรายการแรกและครั้งที่สองทุกคนแล้วในที่สุดพิมพ์เพียง

คำอธิบาย:

---------   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 ไบต์

นี่เป็นความท้าทายที่สนุก! และมันเป็นความท้าทายที่ภาษาของฉันทำได้ดี

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

วนรอบค่าทั้งหมดตั้งแต่ 1 ถึง 100 ส่งออกค่าที่ไม่มี 2 คั่นด้วยบรรทัดใหม่

คุณสามารถลองได้ที่http://sandbox.onlinephpfunctions.com/code/2c97a2b6954c29844f1079938da771d51e2e0d99

Ungolfed:

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

{@/}จะใช้ในการปิด{@for ...}และ{@if ...}แต่เป็นตัวเลือก
เมื่อรวบรวมเป็น PHP จะเพิ่มการปิดที่จำเป็น


หากคุณอยากรู้อยากเห็นรหัส golfed ให้ผลลัพธ์ในโค้ด PHP นี้:

// {@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
};};

ที่$FN['array_flat']ถูกกำหนดไว้นอกรหัสนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.