เป็นคนแรกที่ 1


47

Intro

ทุก ๆ ปีDyalog Ltd.จัดการแข่งขันสำหรับนักเรียน ความท้าทายคือการเขียนรหัส APL ที่ดี นี่เป็นรุ่นที่ผู้ไม่เชื่อเรื่องภาษาของปัญหาที่แปดของปีนี้

ฉันมีสิทธิ์อย่างชัดเจนในการโพสต์ความท้าทายนี้ที่นี่จากผู้เขียนต้นฉบับของการแข่งขัน รู้สึกอิสระที่จะตรวจสอบโดยทำตามลิงค์ที่ให้ไว้และติดต่อผู้เขียน

ปัญหา

รับรายการบูลีน * "ปิด" ความจริงทั้งหมดหลังจากความจริงครั้งแรก

ไม่มีความจริงเหรอ? ไม่มีปัญหา! เพียงแค่คืนค่ารายการโดยไม่แก้ไข

ตัวอย่าง

[falsy,truthy,falsy,truthy,falsy,falsy,truthy][falsy,truthy,falsy,falsy,falsy,falsy,falsy]

[][]

[falsy,falsy,falsy,falsy][falsy,falsy,falsy,falsy]


* ความจริงทั้งหมดของคุณจะต้องเหมือนกันและความเท็จทั้งหมดของคุณจะต้องเหมือนกัน รวมถึงผลลัพธ์ด้วย


2
เราสามารถใช้รายการลิสต์หรือการแสดงรายการความจริง / เท็จอื่น ๆ ที่เป็นธรรมชาติในภาษาที่เราเลือกได้หรือไม่?
Martin Ender

1
ใช่ถ้าคุณพูดถึง "ความจริง" และ "เท็จ" ในการท้าทายแทนที่จะเป็น "บูลีน" "จริง" และ "เท็จ" ;)
Martin Ender

1
ฉันไม่ชัดเจนเกี่ยวกับบูลีน เราสามารถใช้ 0/1 ถึงแม้ว่าภาษาของเรามีจริง / เท็จ?
xnor

1
@ xnor Ah จุดดี ฉันคิดว่ามันยุติธรรมที่จะอนุญาตให้เลือกอินพุต แต่เอาต์พุตต้องตรงกันคุณไม่คิดอย่างนั้นหรือ
Adám

1
@xnor ฉันได้ยินคุณ แต่ถ้า Haskell ไม่สามารถรักษาตัวเลขเป็น Booleans หรือไม่สามารถใช้เลขคณิตใน Booleans ได้นั่นเป็นข้อ จำกัด ที่แท้จริงในอำนาจการเล่นกอล์ฟของ Haskell และควรจะมีการนับจำนวนไบต์โดยการแปลงหรืองานอื่น ๆ -arounds คุณคิดอย่างไรกับสูตรเชิงอรรถ
Adám

คำตอบ:


36

Python 2 , 35 ไบต์

while 1:b=input();print b;True&=b<1

ลองออนไลน์! อินพุตและเอาต์พุตเป็นบรรทัดของ True / False

ขึ้นอยู่กับวิธีการแก้ปัญหาของเดนนิส นิยามใหม่ของตัวแปรTrueที่จะเป็นFalseหลังจากที่มีTrueการป้อนข้อมูลที่พบ ด้วยวิธีนี้อินพุตเพิ่มเติมของTrueจะประเมินFalseและพิมพ์เช่นนี้

นิยามใหม่คือคือTrue&=b<1 True = True & (b<1)เมื่อป้อนข้อมูลที่bเป็นTrueแล้ว(b<1)เป็นเท็จ (ตั้งแต่True==1) ดังนั้นจะกลายเป็นTrueFalse


19
คุณสามารถกำหนด True จริง ??? สิ่งนี้สมควรได้รับ +1 เพียงเพราะ hax> _>
HyperNeutrino

1
@HyperNeutrino ใช่ แต่ไม่ใช่ใน Python 3 (ซึ่งใช้ได้เพราะภาษาที่นี่คือ Python 2)
Brian McCutchon

@BrianMcCutchon โอเคขอบคุณ นั่นเป็นเรื่องแปลก แต่ ...
HyperNeutrino

@HyperNeutrino True, False = False, Trueมันอาจจะมีมูลค่าการกล่าวขวัญที่คุณสามารถทำได้
Brian McCutchon

1
@HyperNeutrino - ไม่ Builtins ยังคงคืนค่า 'จริง' เป็นเพียง 'จริง' ที่คุณพิมพ์การเปลี่ยนแปลง (หรือโมดูลในบางกรณี ... ) ดังนั้น bool (1) return True แต่ bool (1) == True คืนค่า False
TLW

30

APL , 2 ไบต์

<\

หาฟังก์ชั่น "สแกนโดยใช้ค่าที่น้อยกว่า" ลองออนไลน์!

คำอธิบาย

ใน APL ตัวดำเนินการ\(สแกน) จะลดส่วนนำหน้าที่ไม่ใช่ของอาร์เรย์จากด้านขวาโดยใช้ฟังก์ชันที่มีให้ ตัวอย่างเช่นกำหนดอาร์เรย์0 1 0มันคำนวณ0(คำนำหน้าของความยาว 1), 0<1(คำนำหน้าของความยาว 2) และ0<(1<0)(คำนำหน้าของความยาว 2) และใส่ผลลัพธ์ลงในอาร์เรย์ใหม่ วงเล็บเชื่อมโยงทางด้านขวา ลดลง<จากผลการที่เหมาะสมในการ1ว่าเมื่อองค์ประกอบสุดท้ายของอาร์เรย์เป็น1และที่เหลือเป็น0ดังนั้นคำนำหน้าสอดคล้องกับซ้ายสุด1จะลดลงไป1และคนอื่น ๆ 0ที่จะ


ที่สุด! ฉันสงสัย
2560

ตอนนี้ฉันคิดว่าคุณสามารถตอบคำถามใน J ได้หรือไม่?
2560

@ ใช่ใช่ใน J มันคือ 3 ไบต์: </ \ Jelly อาจมีโซลูชัน 2 ไบต์แบบแอนะล็อกเช่นกัน
Zgarb

ไม่ฉันไม่คิดอย่างนั้นเพราะเจลลี่เป็นซ้ายไปขวา
Adám

คุณควรโพสต์คำตอบภาษาแยกเป็นโพสต์แยก
อดัม

22

Aceto , 19 17 ไบต์ไม่ใช่การแข่งขัน

รุ่นใหม่ (17 ไบต์):

เวอร์ชั่นใหม่นี้ใช้อักขระทีละตัวและดำเนินการได้ดีที่สุดด้วย-Fตัวเลือก มันทำงานคล้ายกัน แต่ไม่เหมือนโซลูชันก่อนหน้านี้:

 >,
Op0
p|1u
,ip^

คำตอบเก่า (19 ไบต์):

(ไม่แข่งขันเพราะฉันต้องแก้ไขข้อบกพร่องสองข้อในล่าม)

|p1u
iOp<
|!`X
rd!r

นี่เป็นคำตอบแรกของ Aceto ที่เน้นสิ่งที่สามารถทำได้ค่อนข้างดี "รายการ" คือสตรีมอินพุตที่มีหนึ่งอินพุตต่อบรรทัด "1" สำหรับจริงและ "0" สำหรับเท็จโดยมีสตริงว่างที่แสดงถึงจุดสิ้นสุดของรายการ

code flow illustration

โปรแกรม Aceto ทำงานบนเส้นโค้งของฮิลแบร์ตโดยเริ่มจากด้านล่างซ้ายและสิ้นสุดที่มุมล่างขวา ก่อนอื่นเราจะrสร้างสตริงduplicate และ negate ( !) สตริงนั้นเปลี่ยนสตริงว่างให้เป็น True ทุกอย่างอื่นเป็น False จากนั้นมีกระจกแนวนอนแบบมีเงื่อนไข ( |): หากองค์ประกอบบนสุดของสแต็คเป็นจริงกระจกในแนวนอน สิ่งนี้เกิดขึ้นเมื่อสตริงว่างเปล่า ถ้าเราทำมิเรอร์เราจะลงที่Xซึ่งฆ่าล่าม

มิฉะนั้นเราจะแปลงสำเนาที่เหลืออยู่ในสแต็กเป็นinteger และทำมิเรอร์แนวนอนแบบมีเงื่อนไขอีกครั้ง: เวลานี้เนื่องจาก 1 เป็นความจริงและ 0 เป็นเท็จเราจะทำมิเรอร์ถ้าเราเห็นมูลค่าที่แท้จริง (แรก) หากเราไม่ทำมิเรอร์ (ดังนั้นเราเห็น 0) เราจะทำการลบpสิ่งที่อยู่ในสแต็ก (เนื่องจากสแต็กว่างเปล่าศูนย์) และข้ามไปที่ต้นOกำเนิดของเส้นโค้งที่เราเริ่มต้นเริ่มกระบวนการทั้งหมดอีกครั้ง

มิฉะนั้นเมื่อเราเห็น 1 เราจะสะท้อนและลงจอดบนuซึ่งกลับทิศทางที่เราเคลื่อนที่บนเส้นโค้งของฮิลแบร์ต 1pพิมพ์ 1 และตอนนี้เราไปเหมือนกันOเราจะไปถ้าเราเห็น 0 แต่เนื่องจากเราอยู่ใน "โหมดกลับด้าน" ต้นกำเนิดของเราอยู่ที่ด้านล่างขวาเราจึงกระโดดไปที่นั่น

ตอนนี้เรากินrสตริงอื่นแล้วลบล้างมัน หากสตริงว่างเปล่าและดังนั้นองค์ประกอบสแต็คด้านบนเป็นความจริง`จะไม่หนีคำสั่งถัดไป ( X) ทำให้เราออกจาก

มิฉะนั้น (ถ้าสตริงไม่ว่าง) เราจะหลีกเลี่ยงXและละเว้นมัน ในกรณีนั้นเราไปทางซ้าย ( <), print 0 (เพราะ stack ว่างเปล่า) และกระโดดกลับไปที่Origin


2
ขอแสดงความยินดีกับความท้าทายที่เหมาะสมครั้งแรกของคุณที่แก้ไขใน Aceto
Adám

2
ดูแผนภาพ ถูกต้อง ...
อดัม

1
@ Adámมันอาจจะไม่ช่วย (ถ้าคุณไม่รู้จัก Aceto) ด้วยตัวเอง แต่ฉันคิดว่ามันน่าจะดีที่ได้เห็นข้างๆข้อความเพื่อให้สามารถติดตามได้ดีขึ้น
L3viathan

15

Java8, 24 19 ไบต์

Long::highestOneBit

หวังว่านี่ถูกกฎหมาย ฉันได้รับความประทับใจว่าอินพุต / เอาต์พุตไม่ต้องประเมินว่าเป็นจริง / เท็จในภาษา ใช้อินพุตเป็นเวลานานและให้หนึ่งเอาต์พุตเป็นเอาต์พุตโดยเป็นค่าจริงและเลขศูนย์เป็นเท็จในการแทนค่าฐานสอง ตัวอย่างเช่นไบนารี 00101 คือ 5 และจะส่งกลับไบนารี 00100 ซึ่งเท่ากับ 4

ห้าไบต์ต้องขอบคุณ @puhlen


4
วิธีการที่ดี Java เป็นcompetitive‽
อดัม

3
ว้าว, JAVA เป็นแข่งขัน answer‽
Zachary

ไม่แน่ใจว่าทั้งหมดนี้ถูกต้องสำหรับกฎ codegolf แต่อาจปรับปรุงเป็น 19 ตัวอักษรโดยใช้การอ้างอิงวิธีการ: Long::highestOneBitซึ่งก่อให้เกิดผลลัพธ์ที่เหมือนกันกับไวยากรณ์ที่สั้นลง
puhlen

@puhlen นิพจน์ที่ประเมินค่าฟังก์ชันที่ไม่ระบุชื่อได้รับอนุญาต
Cyoce

2
@NathanMerrill java.langแพคเกจจะถูกนำเข้าโดยค่าเริ่มต้น จากข้อกำหนดภาษา "หน่วยการคอมไพล์มีการเข้าถึงทุกประเภทที่ประกาศในแพ็คเกจโดยอัตโนมัติและยังนำเข้าประเภทสาธารณะทั้งหมดที่ประกาศในแพ็คเกจ java.lang ที่กำหนดไว้ล่วงหน้าโดยอัตโนมัติ"
JollyJoker

12

เรติน่า 6 ไบต์

1>`1
0

ลองออนไลน์!

อินพุตคือรายการ0s (สำหรับเท็จ) และ1s (สำหรับจริง)

การแข่งขันทั้งหมด1และแทนที่แต่ละยกเว้นคนแรก ( 1>) 0ด้วย


ฉันเห็นได้แล้ว คุณทำงานในสำนักงานในระบบปฏิบัติการบางระบบ ผู้จัดการเข้ามาแล้วตะโกนใส่คุณเพื่อเขียนระบบปฏิบัติการทั้งหมดด้วย regex
Christopher

10

V , 7 ไบต์

f1òf1r0

ลองออนไลน์!

การส่ง V ครั้งแรกของฉัน! \ O /

มันทำงานอย่างไร

f1òf1r0
f1       "go to the next occurence of 1
  ò      "repeat the following until end:
   f1    "    go to the next occurence of 1
     r0  "    replace with 0

มันทำงานอย่างไร
Brian McCutchon

@BrianMcCutchon คำอธิบายที่เพิ่ม
Leun Nun

สิ่งนี้ล้มเหลวสำหรับ 1 ในตำแหน่งแรก :(
nmjcman101

แก้ไขแล้ว @ nmjcman101
Leun Nun

เนื่องจากคุณเปลี่ยนรูปแบบการป้อนข้อมูลคุณสามารถสลับr0กับ<C-x>เพื่อลดรูปแบบและบันทึกไบต์
nmjcman101

9

Haskell , 25 ไบต์

ฟังก์ชั่นที่ไม่ระบุชื่อการกลับรายการของBools

(foldr(\x l->x:map(x<)l)[])[False,True,False,False]ใช้เป็น

foldr(\x l->x:map(x<)l)[]

ลองออนไลน์!

มันทำงานอย่างไร

  • พับรายการจากด้านขวาเตรียมองค์ประกอบใหม่และอาจแก้ไขสิ่งต่อไปนี้
  • xเป็นองค์ประกอบที่จะรวมเข้ากับรายการlย่อย
  • การใช้งานที่Falseเปรียบเทียบน้อยกว่าTrueจึงmap(x<)lจะเปลี่ยนใด ๆTrueในการlเข้าFalseถ้าเป็นxTrue

9

เยลลี่ 4 ไบต์

+\=a

ลองออนไลน์!

นี่เป็นอัลกอริธึมที่ค่อนข้างแตกต่างกับโซลูชันภาษากอล์ฟส่วนใหญ่อื่น ๆ (แม้ว่าหลังจากที่ฉันโพสต์ไปแล้วฉันสังเกตว่าโซลูชัน R ใช้อัลกอริธึมนี้ด้วย) และผูกกับเจ้าของเรกคอร์ด Jelly ปัจจุบัน

คำอธิบาย

+\=a
+\    Cumulative sum of the input list
  =   Compare corresponding elements with the input
   a  Logical AND corresponding elements with the input

ตราบใดที่องค์ประกอบทั้งหมดทางด้านซ้ายขององค์ประกอบเป็น 0 ผลรวมสะสมจนถึงองค์ประกอบจะเท่ากับองค์ประกอบนั้นเอง ทางด้านขวาของ 1 แรกทั้งสองแตกต่างกัน (เพราะตอนนี้เราเพิ่มองค์ประกอบที่ไม่ใช่ศูนย์ไปทางซ้าย) ดังนั้น+\=ให้รายการที่มี 1 (เช่นจริง) ถึงและรวมถึงองค์ประกอบความจริงแรก สุดท้ายตรรกะและมีรายชื่อเดิมจะให้เรา 1 สำหรับเพียงองค์ประกอบ truthy แรก



8

05AB1E , 6 ไบต์

รหัส:

ā<s1kQ

คำอธิบาย:

ā         # External enumeration, get a and push [1 .. len(a)]
 <        # Decrement each
  s       # Swap to get the input
   1k     # Get the first index of 1
     Q    # Check for equality with the enumeration array

ใช้การเข้ารหัส05AB1E ลองออนไลน์!


1k>sƶ-_เป็นอีกหนึ่งที่แย่กว่านั้น liftความคิดอาจจะมี แต่ที่มีศักยภาพ
Magic Octopus Urn




4

R , 24 ไบต์

cumsum(T<-scan(,F))==T&T

ลองออนไลน์!

ตัวอย่าง:

สำหรับการป้อนข้อมูลผลตอบแทนFALSE TRUE TRUE FALSE
cumsum(T<-scan(,F))==T TRUE TRUE FALSE FALSEF ในการสแกนทำให้มั่นใจได้ถึงการป้อนข้อมูลเชิงตรรกะ
FALSE TRUE TRUE FALSEและเป็นTRUE TRUE FALSE FALSE FALSE TRUE FALSE FALSEคนเดียว&ทำการเปรียบเทียบแบบตามองค์ประกอบ


@rtbull โชคไม่ดีที่รูปแบบการป้อนข้อมูลต้องเหมือนกับเอาต์พุต
MickyT



3

Python 58 ไบต์

lambda x:[x[i]and x.index(x[i])==i for i in range(len(x))]

หากx[i]เป็นเท็จเอาต์พุตจะเป็นเท็จ มิฉะนั้นจะให้องค์ประกอบหรือไม่ที่จะเกิดขึ้นครั้งแรกในอาร์เรย์ของตัวเอง



3

Perl 5, 20 ไบต์

sub{map$_&&!$x++,@_}

Truthy is 1and falsey is ''(สตริงว่างเปล่า)

คำอธิบาย:

mapวนรอบองค์ประกอบของรายการ@_อาร์กิวเมนต์ส่งผ่านไปยังรูทีนย่อยตั้งค่าแต่ละองค์ประกอบเป็น $ _ ภายในและส่งกลับอาร์เรย์ของค่าส่งคืนที่คำนวณจากแต่ละองค์ประกอบ $_&&!$x++ผลลัพธ์$_ถ้า$_เป็นเท็จและ!$x++ถ้ามันเป็นความจริง (โปรดทราบว่า && การลัดวงจรจึง!$x++ไม่ดำเนินการจนกว่าจะถึงค่าความจริงแรก) $x++ผลตอบแทน0(ซึ่งเป็นเท็จ) ครั้งแรกที่มันถูกเรียกใช้แล้วเพิ่มขึ้นทุกครั้ง (และยังคงเป็นจริง) !ขัดแย้ง$x++และเพื่อให้มันกลับ truthy ครั้งแรกที่จะพบและ falsey หลังจากนั้น


ข้อสงสัยของคุณเป็นธรรม: คุณต้องส่งฟังก์ชั่นเต็มรูปแบบ (หรือโปรแกรมเต็มรูปแบบ); และนี่เป็นเพียงตัวอย่างข้อมูลเท่านั้น (ดังนั้นจึงไม่ถูกต้องหากไม่มีsub{...})
Dada

2

Pyth - 9 ไบต์

.e&b!s<Qk

ลองที่นี่

.e&b!s<Qk
.e          # Python's 'enumerate' (i.e., for each index k and each element b at that index)
      <Qk   # The first k elements of the input
     s      # 'Sum' these first k elements (with booleans, this is a logical 'or')
  &b!       # The value of the output at index k is [value of input @ index k]&&[the negation of the 'sum']

1
มันน่าจะเป็นที่มีประสิทธิภาพมากขึ้นในการใช้ตัวแปรและเพียงแค่ map m&!~|Zมากกว่าปกติ:
FryAmTheEggman


2

C #, 77 ไบต์

a=>{var b=1<0;for(int i=0;i<a.Length;){a[i]=b?1<0:a[i];b|=a[i++];}return a;};

Func<bool[], bool[]>รวบรวมไป ไม่มีอะไรที่ฉลาดจริงๆเพียงแค่ทางออกที่ตรงไปตรงมา


2

sed , 16 19 ไบต์

15 18 ไบต์รหัสต้นทาง + 1 ไบต์สำหรับแฟล็ก -r (หรือแฟล็ก -E สำหรับ BSD sed)

:
s/1(0*)1/1\10/
t

ลองออนไลน์!

แก้ไข:ขอบคุณRiley ที่ชี้ให้เห็นข้อผิดพลาด


@Riley ขอบคุณสำหรับการชี้ว่า! ดูเหมือนว่า TIO จะมีรุ่นของ sed ที่แตกต่างจากของฉัน (BSD) ฉันไม่สามารถปล่อยให้ป้ายกำกับว่างเปล่า ดีที่จะรู้เรื่องนี้
Maxim Mikhaylov

ใช่ขอโทษ TIO ใช้ GNU sed มันเป็นคุณสมบัติการเปิดบั๊ก
Riley

2

เยลลี่ขนาด 4 ไบต์

TḊṬ^

ลองออนไลน์!

อย่างไร?

นี่คือสิ่งที่ถูกถามในความหมายที่แท้จริง:

TḊṬ^ - Main link: list a   e.g. [0,1,0,1,0,0,1]  or  [0,1,0,1,0,1,0]
T    - get the truthy indexes   [  2,  4,    7]      [  2,  4,  6  ]
 Ḋ   - dequeue                  [      4,    7]      [      4,  6  ]
  T  - make a boolean array     [0,0,0,1,0,0,1]      [0,0,0,1,0,1  ]
   ^ - XOR that with a          [0,1,0,0,0,0,0]      [0,1,0,0,0,0,0]

2

c (พร้อม gcc builtins) 40

แนวทางที่แตกต่างกันเล็กน้อย:

f(n){return!n?0:1<<31-__builtin_clz(n);}

นี่อาจถูกตัดสินว่าไม่ถูกต้อง - ในกรณีนี้ฉันจะทำเครื่องหมายว่าไม่เป็นการแข่งขัน

อินพุตและเอาต์พุต "อาร์เรย์" เป็นจำนวนเต็ม 32 บิตที่ไม่ได้ลงชื่อซึ่งจะเป็นการ จำกัด ขนาดรายการอินพุตให้เท่ากับ 32 ซึ่งอาจเป็นการตัดสิทธิ์ หากอินพุตมีความยาวน้อยกว่า 32 บิตแสดงว่าอาจจะเต็มด้วยบิตศูนย์ที่ส่วนท้าย

ลองมันออนไลน์


2

แบตช์85 73 ไบต์

:a
@(if %1.==. exit)&set/ar=(1-f)*%1
@echo %r%&set/af^|=%1&shift&goto a

รับอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง สำหรับตัวอย่าง:1.bat 0 1 0 1 0 0 1

รุ่นก่อนหน้า

@set f=1
:a
@(if %1.==. exit)&set/ar=f*%1
@echo %r%&(if %1==1 set f=)&shift&goto a

2

Brain-Flakขนาด 230 ไบต์

([]){{}({}[()]<>)<>([])}{}<>([]){{}({}<>)<>([])}{}<>({<({}<>)<>>()}<(())>){({}[()]<<>({}<>)>)}{}(([])<{{}(({})())({<{}>{}((<()>))}<{}{}>)({}<>)<>([])}<>>){({}[()]<({}<>)<>>)}{}<>([]){{}({}<>)<>([])}{}<>{}{}([]){{}({}<>)<>([])}{}<>

ฉันจะอธิบายในเร็ว ๆ นี้ แต่แม่ของฉันปรุงมันฝรั่งทอดให้ฉัน

([]){{}({}[()]<>)<>([])}{}<>([]){{}({}<>)<>([])}{}<> Subtracts one from every item

({<({}<>)<>>()}<(())>){({}[()]<<>({}<>)>)}{} Loops down stack until current item is zero and adds one

(([])<{{} (({})())({<{}>{}((<()>))}<{}{}>) ({}<>)<>([])}<>>){({}[()]<({}<>)<>>)}{}<> On every item of stack if it is 0 do nothing and if it is -1 add one

([]){{}({}<>)<>([])}{}<> Flip stack

{}{} Remove the two zeros at top of stack

([]){{}({}<>)<>([])}{}<> Flip stack back

ลองออนไลน์!

ขอขอบคุณเป็นพิเศษ

ขอขอบคุณเป็นพิเศษกับ Wheat Wizard และ Riley ที่ช่วยฉันด้วยรหัส!


2

Python 3, 69 66 64 60 54 53 ไบต์

lambda i:[k==i.index(j)and j for k,j in enumerate(i)]

ใช้อาร์เรย์ของfalses และtrues นี่คือรายการความเข้าใจของfalses ยกเว้นถ้าค่าของการทำซ้ำปัจจุบันคือtrueและมันเป็นครั้งแรกtrueในการป้อนข้อมูล

ดูเหมือนจะยาวไปหน่อย (และเป็นแลมบ์ดาแรกของฉัน) ดังนั้นหากคุณสามารถหาวิธีตีกอล์ฟได้มันจะได้รับการชื่นชมอย่างมาก!


คุณสามารถอธิบาย?
Adám

อ๊ะอุ๊ปส์ตีความคำถามผิด ๆ
OldBunny2800

ยกเลิกการลบและแก้ไขคำตอบ
OldBunny2800

0 for 0forคุณสามารถบันทึกหนึ่งไบต์โดยทำ
Zacharý

มันใช้งานได้ 1if และ 1else ใช่ไหม ขอบคุณ!
OldBunny2800

2

Brain-Flak , 146 144 ไบต์

([]){{}({}<>)(())<>([])}{}<>((())){{}({}<>)<>}{}<>(()){{}((){[()](<{}>)}{})(<>)<>}<>(())<>([]){{}(<{}<>>)<>([])}{}<>{}{}([]){{}({}<>)<>([])}<>{}

ลองออนไลน์!

# Reverse the stack and add a 1 between each to help with reversing later
([]){{}({}<>)(())<>([])}{}<>

# Add a 1 in case there aren't any truthy values (and another 1 like before)
((()))

# Reverse the stack back to it's original order using the 1s from earlier to know when to stop
{{}({}<>)<>}{}<>

# Push 1 to start the loop
(())

# Until we find the first 1
{

 # Pop the last value
 {}

 # Logical not
 ((){[()](<{}>)}{})

  # Put a 0 on the other stack
  (<>)<>

# end loop
}

# Put a 1 on the other stack
<>(())<>

# Push the stack height
([])

# While there are values on this stack
{

 # Move them to the other stack as a 0
 {}(<{}<>>)<>([])

# End while
}{}

# Pop an extra 0
{}

# Switch stacks
<>

# Copy everything back (to reverse it back to it's original)
([])
{
 {}({}<>)<>([])
}<>{}

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