การสลับ“ ดี” และ“ ไม่ดี”


17

คำอธิบายการท้าทาย:

เขียนโปรแกรมที่ขอให้ผู้ใช้ป้อนข้อมูล ผู้ใช้จะใส่หรือGood Badคุณไม่จำเป็นต้องรองรับอินพุตอื่น ๆ หากผู้ใช้เข้าสู่Goodพิมพ์Badและในทางกลับกัน (เพื่อ stdout ฯลฯ )

หมายเหตุ:

1)คุณไม่สามารถใช้คำสองคำอื่น ๆ

2)โปรแกรมของคุณต้องถามและพิมพ์ครั้งเดียวเท่านั้น

3)คุณไม่จำเป็นต้องแสดงข้อความแจ้ง

4)ผลลัพธ์จะต้องปรากฏแยกออกจากอินพุตด้วยวิธีการใด ๆ

5)ฟังก์ชั่นไม่ได้รับอนุญาตให้รับค่าและส่งกลับผลลัพธ์; ผู้ใช้จะต้องโต้ตอบกับโปรแกรม

โชคดี!


9
เราจะเขียนฟังก์ชันที่รับเข้าเป็นอาร์กิวเมนต์แทนการกระตุ้นได้หรือไม่?
Adám

8
โปรดแก้ไขคำถามของคุณเกี่ยวกับฟังก์ชันที่อนุญาตหรือไม่ ฉันขอแนะนำอย่างยิ่งว่าจะไม่ จำกัด อินพุตของ STDIN เว้นแต่คุณจะมีเหตุผลที่ดีในการ (และฉันไม่เห็น)
Jo King

2
ขอให้ผู้ใช้ป้อนข้อมูล (stdin ฯลฯ )แสดงให้เห็นว่าอนุญาตเฉพาะอินพุต STDIN หรือแบบโต้ตอบเท่านั้น โปรดเปลี่ยนเป็นวิธี I / O เริ่มต้นทั้งหมด
MilkyWay90

1
"ขอให้ผู้ใช้ป้อนข้อมูล" นั่นควรเป็นคำถามที่ชัดเจนหรือไม่ เนื่องจากพรอมต์ CLI ที่ว่างเปล่าไม่ได้ถามอะไรเลย…
user0721090601

5
วัตถุประสงค์ของการ จำกัด นี้คืออะไร? ไม่อนุญาตให้ใช้ฟังก์ชันรับค่าและส่งคืนผลลัพธ์ ผู้ใช้จะต้องโต้ตอบกับโปรแกรม
mbomb007

คำตอบ:


46

Python 3 ,  32  31 ไบต์

exit('GBoaodd'['G'<input()::2])

ลองออนไลน์!

อย่างไร?

การทดสอบถ้าใส่เป็นโดยการเปรียบเทียบ'Good''G'<input()

ใช้ความจริงที่ว่าในหลามFalse==0และTrue==1ใช้ผลที่เป็นstartดัชนีของชิ้นของ'GBoaodd'ใช้ที่ไม่ได้กำหนดstopและstepของที่มี2'GBoaodd'[start:stop:step]

พิมพ์ไปที่ STDERR (บันทึกไบต์ด้วยการexitแทนที่print)


ช่างเป็นกลอุบาย! ไม่เข้าใจวิธีการทำงาน
Ishaq Khan

คุณสามารถใช้แลมบ์ดาเพื่อร่นไบต์ได้หรือไม่?
MilkyWay90

@ MilkyWay90 ตามคำถามมันจะต้องเป็นโปรแกรมที่รับอินพุต
Jonathan Allan

@A__ โดยค่าเริ่มต้นใช่แม้ว่าจะมีความคิดเห็นจาก OP ซึ่งแสดงว่าอาจมีการแทนที่ที่นี่
Jonathan Allan

4
น่าเสียดายที่ "ดี" และ "ไม่ดี" แบ่งปัน "d" หรือคุณสามารถทำได้'GoodBad'.strip(input())ซึ่งจะสั้นกว่าไบต์
xnor

15

APL (Dyalog Unicode) , 13 ไบต์SBCS

โปรแกรมเต็มรูปแบบที่แจ้งให้ป้อนจาก stdin และพิมพ์ไปยัง stdout

'GooBad'1↓⍞

ลองออนไลน์!

 พรอมต์สำหรับการป้อนข้อมูลจาก stdin; GoodหรือBad

¯1↓ วางอักขระตัวสุดท้าย ( d); GooหรือBa

'GooBad'~ Multiset ลบอักขระเหล่านั้นออกจากสิ่งเหล่านี้ BadหรือGood


5
ทำไมdownvote‽
Adám

1
รหัสมีGooBadหรือGoodBadไม่?
NoOneIsHere

ฉันคิดว่ามันควรจะมีGooBadเช่นเดียวกับการเพิ่มตัวละคร `` `` `` จะทำให้โพสต์นี้ 14 ไบต์

@ NoOne อยู่ที่นี่ขอบคุณ แก้ไขแล้ว.
อดัม

12

เครื่องจักรทัวริง แต่แย่ลง 405 ไบต์

0 0 0 1 1 0 0
1 1 1 1 2 0 0
0 2 0 1 3 0 0
0 3 0 1 4 0 0
0 4 0 1 5 0 0
1 5 0 1 6 0 0
0 5 1 1 h 0 0
1 6 1 1 7 0 0
1 7 0 1 8 1 0
0 8 0 1 9 0 0
1 9 1 1 9 0 0
0 9 0 1 a 0 0
1 a 0 1 a 0 0
0 a 0 0 b 0 0
0 b 1 1 c 1 0
0 c 0 0 d 0 0
1 d 0 0 e 0 0
0 e 0 0 f 0 0
0 f 1 1 g 1 1
1 h 1 1 i 0 0
0 i 1 1 j 1 0
0 j 0 1 k 0 0
1 k 1 1 k 0 0
0 k 0 1 l 0 0
0 l 1 1 l 0 0
1 l 1 0 m 1 0
1 m 1 1 n 1 0
1 n 1 1 o 0 0
0 o 0 1 p 1 1

ลองออนไลน์!

อย่างนี้ใช้เวลาสักครู่

คำอธิบายที่ยังไม่เสร็จ :

0 0 0 1 1 0 0 Start going to the sixth bit
1 1 1 1 2 0 0
0 2 0 1 3 0 0
0 3 0 1 4 0 0
0 4 0 1 5 0 0 End going to the sixth bit
1 5 0 1 6 0 0 If the sixth bit is 1, then it is Good. Start transforming "G" to "B" and go to state 6
0 5 1 1 h 0 0 Else, it is Bad. Start transforming "B" to "G" and go to state h
1 6 1 1 7 0 0 Keep on transforming "G" to "B"
1 7 0 1 8 1 0 End transforming and print "B"
0 8 0 1 9 0 0 We are in the first "o" in "Good". Start moving into the 5th bit.
1 9 1 1 9 0 0
0 9 0 1 a 0 0
1 a 0 1 a 0 0 Do some looping magic and start transforming "o" to "a"
0 a 0 0 b 0 0 End looping magic
0 b 1 1 c 1 0 End transforming and print "a"
0 c 0 0 d 0 0 
1 d 0 0 e 0 0 Start transforming "a" to "d"
0 e 0 0 f 0 0 
0 f 1 1 g 1 1 Stop transforming, print "d", and terminate
1 h 1 1 i 0 0 Continue transforming "B" to "G"
0 i 1 1 j 1 0 Stop transforming and print out "G"
0 j 0 1 k 0 0 Start going into position to print out "oo"
1 k 1 1 k 0 0
0 k 0 1 l 0 0 Move more efficiently using LOOPING MAGIC1!1111111 
0 l 1 1 l 0 0 looping magic end, start transforming
1 l 1 0 m 1 0 end transforming and print out out "o"
1 m 1 1 n 1 0 print out "o" again
1 n 1 1 o 0 0 get into the "d" byte
0 o 0 1 p 1 1 print "d" and execute YOU HAVE BEEN TERMINATED

4
"ทัวริง - เครื่องจักร - แต่ - แย่ลง" คือไม่ต้องสงสัยเลยว่า esolang ที่ฉันโปรดปรานใหม่
MikeTheLiar

@ MikeTheLiar ขอบคุณ!
MilkyWay90

@A__favorite/disliked/"Turing-Machine-But-Way-Worse" is, without a doubt, my new favorite esolang.
MilkyWay90

"คุณถูกยกเลิกไปแล้ว" อาร์โนลด์ใช่มั้ย
TemporalWolf

@TemporalWolf มันคือ I, ArnoldC!
MilkyWay90


8

ชุดประกอบ 8088, IBM PC DOS ขนาด 25 ไบต์

แต่อย่างใด:

BA 0110     MOV  DX, OFFSET GB  ; point DX to 'Good','Bad' string 
D1 EE       SHR  SI, 1          ; point SI to DOS PSP (80H) 
02 04       ADD  AL, [SI]       ; add input string length to AL, set parity flag 
7B 02       JNP  DISP           ; if odd parity, input was 'Bad' so jump to display 'Good'
02 D0       ADD  DL, AL         ; otherwise add string length as offset for 'Bad' string 
        DISP: 
B4 09       MOV  AH, 9          ; DOS display string function 
CD 21       INT  21H            ; call DOS API, write string to console 
C3          RET                 ; return to DOS 
        GB  DB  'Good$','Bad$'

คำอธิบาย:

ดูที่ความยาวของสตริงป้อนข้อมูล (บวกพื้นที่ว่างนำหน้า) ที่ DOS จัดเก็บตามที่อยู่หน่วยความจำ80Hและเพิ่มลงในAL(ตอนแรก0 โดย DOS ) หากมีจำนวน1บิตคี่ในการแสดงไบนารีของความยาวสตริงแฟล็กพาริตี CPU จะถูกตั้งค่าเป็นคี่และในทางกลับกัน ดังนั้น' Bad'ความยาวของสตริงอินพุต4( 0000 0100) คือคี่และเลขคี่' Good'คือ5( 0000 0101) คือพาริตี้แม้

DXเป็นชุดแรกที่จะชี้ไปที่สตริง'Good$Bad$'และถ้าความเท่าเทียมกันคือแม้ (input ความหมายคือ' Good') ความก้าวหน้าของตัวชี้สตริงโดยความยาวที่ ( 5) 'Bad$'เพื่อให้ได้ในขณะนี้จุดที่จะต้อง หากพาริตีคี่ไม่ทำอะไรเลยเพราะมันชี้ไป'Good$'แล้ว จากนั้นใช้ DOS API เพื่อแสดง$สตริงที่สิ้นสุดลงในคอนโซล

ตัวอย่าง:

ป้อนคำอธิบายรูปภาพที่นี่

ดาวน์โหลดและทดสอบGOODBAD.COMหรือสร้างจากการxxdถ่ายโอนข้อมูล:

0000000: ba10 01d1 ee02 047b 0202 d0b4 09cd 21c3  .......{......!.
0000010: 476f 6f64 2442 6164 24                   Good$Bad$

7

เยลลี่ 8 ไบต์

“Ċ³ṫ³»œṣ

ลองออนไลน์!

โปรแกรมเต็มรูปแบบคาดหวังว่าสตริงที่จัดรูปแบบของ Python เป็นอาร์กิวเมนต์

อย่างไร?

“Ċ³ṫ³»œṣ - Main Link: list of characters, S
“Ċ³ṫ³»   - compression of dictionary words "Good"+"Bad" = ['G','o','o','d','B','a','d']
      œṣ - split on sublists equal to S
         - implicit, smashing print

1
ดูเหมือนว่า OP ตอบกลับแล้วอินพุตไม่ได้ จำกัด อยู่ที่ STDIN
Erik the Outgolfer

6

Python 3 38 37 34 33 ไบต์

exit("C">input()and"Good"or"Bad")

ลองออนไลน์!

exit() : ส่งคืนโค้ดออกเป็นเอาต์พุต

"C">input(): ตรวจสอบว่าอินพุตมีขนาดใหญ่กว่าสตริงCตามลำดับตัวอักษรหรือไม่

and"Good": ถ้าผลลัพธ์คือผลลัพธ์จะTrueส่งคืนด้วยGood

or"Bad" : มิฉะนั้นส่งคืนด้วย Bad



2
exit(input()[3:]and"Bad"or"Good")ใช้ได้กับจำนวนไบต์เดียวกันด้วย
Neil

6

C, 39 38 ไบต์

main(){puts("Good\0Bad"+getchar()%6);}

ลองออนไลน์!

บันทึกหนึ่งไบต์ต้องขอบคุณ @tsh


5
main(){puts("Good\0Bad"+getchar()%6);}38 ไบต์
TSH

คุณไม่ควรเพิ่ม#include<stdio.h>?
polfosol ఠ_ఠ

3
@polfosol ఠ_ఠหากครั้งนี้มีอะไร แต่กอล์ฟรหัสคุณควรแต่ใน C89 คุณสามารถปริยายประกาศฟังก์ชั่น
Leo Tenenbaum

คุณสามารถใช้ null null แทนได้\0หรือไม่?
สวัสดีลา

5

brainfuck , 72 ไบต์

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

ลองออนไลน์!

คำอธิบาย:,> +++++>,>,>,>,

อ่านอย่างใดอย่างหนึ่ง: "G", 5, "o", "o", "d" หรือ "B", 5, "a", "d", 0

[<<<< [- <->> --- <] <. >> +. >>. >>>] หากอักขระตัวสุดท้ายไม่ใช่ศูนย์:

ย่อ 5 จากเซลล์แรกหนึ่งครั้งและจากเซลล์ที่สามสามครั้ง เพิ่มเซลล์ 3

เซลล์เอาต์พุต 1, 3, 5

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

มิฉะนั้นเพิ่ม 5 ในเซลล์แรกหนึ่งครั้งและสามเซลล์

เซลล์ลดลง 3

เซลล์เอาต์พุต 1, 3, 3, 4


นั่นเป็นทางออกที่ดี คุณสามารถย่อให้สั้นลงได้โดยไม่ต้องใช้การขึ้นบรรทัดใหม่ในอินพุต > +++++>>> [<<< [- <-... >> --- <] <>> + >> >>] <[<< [- <+ >> +++ <] <. >> - .. >.>>>
Dorian

ใช่ฉันรู้ว่ามีบางอย่างที่จะเพิ่มประสิทธิภาพที่นั่น แต่ฉันพบว่ามันยากที่จะตีความสิ่งที่จำเป็นในการปฏิบัติตามกฎ 4
เฮเลนา


4

R , 42 37 35 32 ไบต์

-10 ขอบคุณ Giuseppe และ AkselA!

`if`(scan(,'')>'C','Bad','Good')

ลองออนไลน์!


1
ไม่มีปัญหา. ฉันรู้จักชื่อนักกอล์ฟ R หลายคนดังนั้นฉันมักจะคลิกที่โพสต์หากฉันเห็นชื่อพวกเขาเป็นชื่อล่าสุด :-)
จูเซปเป้

1
การใช้"C"แทนคำตอบแรก"Bad"ในคำตอบนี้จะช่วยประหยัดไบต์คู่อื่นได้
จูเซปเป้

1
แค่อยากรู้อยากเห็นอะไรอยาก`if`(readline()>"C","Bad","Good")จะเป็นคำตอบที่ถูกต้องไหม ฉันใหม่กับเกมนี้และกฎของมัน
AkselA

2
@AkselA ใช่ แต่ฉันยังขอแนะนำให้ใช้แทนscan(,"") readline()รู้สึกอิสระที่จะมาถึงgolfRการสนทนา R กอล์ฟถ้าคุณมีคำถาม R-เฉพาะเจาะจงใด ๆ :-)
จูเซปเป้

2
@AkselA ยังเห็นTips for Golfing in Rสำหรับเคล็ดลับเฉพาะบางประการ มีอัญมณีที่ซ่อนอยู่ในนั้นถ้าคุณอ่านพวกเขา :-)
จูเซปเป้

4

sed , 21 16 13 ไบต์

ขอบคุณ @Cackquack สำหรับคำแนะนำ

/B/cGood
cBad

ลองออนไลน์! ลองออนไลน์! ลองออนไลน์!

TIL cจะลัดวงจรการแยกวิเคราะห์บรรทัดปัจจุบัน


2
cเสนอวิธีแก้ปัญหาที่สั้นกว่า
user41805

1
คุณยังสามารถบันทึกได้อีก 3 ไบต์โดยใช้c
user41805

ต้องเล่นรอบกับมันเล็กน้อย แต่ฉันคิดออก!
GammaFunction

3

JavaScript 31 ไบต์

ฉันชอบคำตอบของ Arnauld แต่ฉันต้องการยอมรับการป้อนข้อมูลของผู้ใช้และสามารถรันได้บน StackExchange ดังนี้:

alert(prompt()[3]?'Bad':'Good')



3

ทับทิมขนาด 22 ไบต์

->n{n>?F?"Bad":"Good"}

ลองออนไลน์!


คำถามจะบอกว่า "ขอให้ผู้ใช้ป้อนข้อมูล" แต่วิธีที่สั้นที่สุดในการทำเช่นนั้นคือการแทนที่แลมบ์ดาด้วยp getsความยาวเท่ากัน (ความคิดเห็นดั้งเดิมของฉันบอกว่าคุณสามารถบันทึก 2 ไบต์ แต่ฉันไม่ได้บัญชีสำหรับการพิมพ์ผล)
DaveMongoose

3
หากเรากำลังจะพูดถึงโปรแกรมเต็มรูปแบบที่ขอให้ผู้ใช้ป้อนข้อมูลการใช้-pแฟล็กจะให้คำตอบที่มีประสิทธิภาพมากที่สุด$_=$_>?F?:Bad:"Good"คือ 20 ไบต์ ลองออนไลน์!
หมึกมูลค่า

3

05AB1E , 10 9 ไบต์

”‚¿‰±”áIK

-1 ขอบคุณไบต์@Emigna

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งสอง

คำอธิบาย:

”‚¿‰±”     # Push dictionary string "Good Bad"
      á    # Only keep letters (to remove the space)
       IK  # Remove the input
           # (output the result implicitly)

ดู 05AB1E นี้เคล็ดลับของฉัน (ส่วนวิธีการใช้พจนานุกรม? )จะเข้าใจว่าทำไมเป็น”‚¿‰±”"Good Bad"


ฉันสามารถดูรูปแบบอื่น ๆ ได้ แต่สิ่งเหล่านี้ทั้งหมดจบลงด้วยจำนวนไบต์เดียวกัน :(
Emigna

1
áที่จริงแล้วคุณสามารถบันทึกไบต์ด้วย
Emigna

@Emigna Ah แน่นอนยอดเยี่ยม ตอนนี้ฉันเห็นáแล้วฉันไม่อยากเชื่อเลยว่าไม่ได้คิดอะไรเกี่ยวกับเรื่องนี้ แต่ในขณะเดียวกันฉันก็รู้ว่าฉันไม่เคยคิดถึงมันเลย ;) ขอบคุณ! (และใช่ฉันมีทางเลือก 10 ไบต์เช่นกัน)
Kevin Cruijssen

1
ไม่ต้องแม้แต่á ”‚¿Bad”IKก็เป็น 9
Grimmy

3

Java (JDK) , 124 ไบต์

interface G{static void main(String[]a){System.out.print(new java.util.Scanner(System.in).next().length()>3?"Bad":"Good");}}

ลองออนไลน์!

มีแนวโน้มมากที่สุดที่ยังคงมีห้องพักสำหรับการปรับปรุง แต่ฉันยังใหม่กับการตีกอล์ฟ


2
ยินดีต้อนรับ! ลองเพิ่มคำอธิบายและ / หรือลิงก์ไปยังล่ามออนไลน์ที่คุณสามารถเรียกใช้รหัสของคุณ (ดูคำตอบอื่น ๆ สำหรับตัวอย่าง) คำตอบที่เป็นรหัสเท่านั้นมีแนวโน้มที่จะถูกตั้งค่าสถานะโดยอัตโนมัติว่าเป็นคุณภาพต่ำ
mbomb007

4
ส่วนความยาวอาจเป็น!="Bad"
โจคิง


3

Ruby, 30 28 ไบต์

puts %w|Good Bad|-gets.split

ไม่ใช่ golf-iest แต่ฉันชอบการละเมิดการแบ่งเพื่อลบบรรทัดใหม่ที่ต่อท้ายและแปลงเป็นอาร์เรย์ในการโทรครั้งเดียว

EDIT -2 bytes ขอบคุณคำแนะนำของ Value Ink!


ภาพนี้"Good"หรือ"Bad"(พร้อมคำพูด); ฉันไม่แน่ใจว่าได้รับอนุญาต
Jordan

1
ใช้ความจริงผิดที่putsพิมพ์แต่ละองค์ประกอบของอาร์เรย์บนบรรทัดแยกต่างหาก มันมีราคาแพงกว่า 3 ไบต์pแต่ก็นับตั้งแต่คุณเอาออก[0]แล้วบันทึกอีก 2 ไบต์โดยไม่จำเป็นต้องมี parens อีกต่อไป ลองออนไลน์!
หมึกมูลค่า

@ValueInk ขอบคุณ! ปัญหาของจอร์แดนยังได้รับการแก้ไขจากการเปลี่ยนแปลงนี้ดังนั้นจึงเป็นเรื่อง win-win
DaveMongoose

3

ภาษาการเขียนโปรแกรมของเช็คสเปียร์ 582 ไบต์

(เพิ่มช่องว่างเพื่อให้สามารถอ่านได้)

G.Ajax,.Puck,.Act I:.Scene I:.[Enter Ajax and Puck]Ajax:
Open mind.Be you nicer the sum ofa big cat the cube ofa big big cat?If solet usScene V.
You is the sum ofthe sum ofyou a big big cat a cat.Speak thy.You is the sum ofyou twice twice twice the sum ofa big big cat a cat.Speak thy.Speak thy.You is the square oftwice the sum ofa big big cat a cat.Let usScene X.
Scene V:.Ajax:
You is the sum ofthe sum ofyou a big big pig a pig.Speak thy.You is the sum ofyou the sum ofa big big big big big cat a pig.Speak thy.You is the sum ofyou the sum ofa big cat a cat.
Scene X:.Ajax:Speak thy.

ลองออนไลน์!

Open mindฉันจะได้รับตัวอักษรตัวแรกของการป้อนข้อมูลด้วย จากนั้นฉันก็ต้องตัดสินใจว่ามันคืออะไร ของตัวเลขทั้งหมดระหว่างB= 66 G= 71, เดรัจฉานของฉัน forcer กล่าวว่า 66 เป็นที่สั้นที่สุดเพื่อเขียน ( the sum ofa big cat the cube ofa big big cat) ดังนั้นฉันเปรียบเทียบอักษรตัวแรกของการป้อนข้อมูลเพื่อ 66. ฉากที่ฉันยังคงที่จะพิมพ์หรือพิมพ์ฉากGood VBad


2

เรติน่า 0.8.2 , 20 ไบต์

oo
o
T`G\oaB`Ro
o
oo

ลองออนไลน์! ลิงค์มีชุดทดสอบ คำอธิบาย:

oo
o

เลี้ยวเข้าไปGoodGod

T`G\oaB`Ro

ย้ายตัวอักษรGoaBที่มีการย้อนกลับของรายการนั้นจึงแลกเปลี่ยนGด้วยBและoด้วยaเช่นการแลกเปลี่ยนกับGodBad

o
oo

เลี้ยวเข้าไปGodGood


1
17 ไบต์แต่สร้างสรรค์น้อยกว่า
pbeentje



2

PHP ,26 23 ไบต์

ประกอบไปด้วยราคาถูกกว่า:

<?=$argn==Bad?Goo:Ba?>d

ลองออนไลน์!

คำตอบเดิม 26 ไบต์

<?=[Ba,Goo][$argn==Bad]?>d

ลองออนไลน์!

หรือ 21 ไบต์ (แต่นี่เป็นคำตอบของ Arnauld )

<?=$argn[3]?Ba:Goo?>d

ลองออนไลน์!


ตัดสินโดยถ้อยคำของคำถามที่มีแนวโน้มที่จะเหมาะสมกว่าreadline() $argn
Progrock

2

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

“GooBa”œ^

ลองออนไลน์!

คำอธิบาย

ความแตกต่าง Multiset สมมาตรระหว่าง input “GooBa”และสตริง


@JanathanAllan ขอบคุณ แก้ไขแล้ว
Luis Mendo

ฉันไม่เห็นสิ่งบ่งชี้ว่าข้อมูลจะต้องผ่าน STDIN ...
Erik the Outgolfer

@EriktheOutgolfer แต่น่าเสียดายที่คำถามทั้งหมดเขียนไว้โดยนัยเราต้องมีโปรแกรมซึ่งเมื่อเรียกใช้จะขอให้ป้อนข้อมูล (แม้ว่าจะไม่ต้องแสดงข้อความแจ้งก็ตาม) ดูคำตอบของตัวเองด้วยเช่นกัน หากคุณต้องการให้พวกเขาเปลี่ยนมันไปเพื่อมัน (แม้ว่าจะทราบว่าพวกเขายังไม่ได้ตอบคำถามแรกที่คล้ายกันแม้ว่าจะแตกต่างกันเล็กน้อยในความคิดเห็น)
Jonathan Allan

ดูเหมือนว่า OP ตอบกลับแล้วอินพุตไม่ได้ จำกัด อยู่ที่ STDIN
Erik the Outgolfer

@EriktheOutgolfer ขอบคุณ! ย้อนกลับ
หลุยส์เมนโด


2

Kegขนาด 22 ไบต์

?^_^_o=[^aB^_|^ooG^]

2

brainfuck , 52 ไบต์

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

ลองออนไลน์!

อาศัยการ Bad เป็นตัวอักษรหนึ่งตัวที่สั้นกว่า Good ดังนั้นอินพุตสุดท้ายจึงว่างเปล่า

คำอธิบาย:

,>,,<<,       Get input into the first three cells
[             If the last letter was not empty (i.e. Good)
 >-----.      Decrement 'G' to 'B' and print
 <---.        Decrement 'd' to 'a' and print
 +++.         Increment back to 'd' and print
>>]           End loop
>[            If it is Bad instead
 +++++.       Increment 'B' to 'G' and print
 +[-<-->]<-.. Manipulate into  'o' and print twice
 >>.          Print 'd'
>]            End loop


2

Boolfuck , 47 ไบต์

+>,+;>,;,+;>;;;+;+;+[;<;;;,;+;;+;<];;+;+;;+;;+;

ลองออนไลน์!

ใช้ความจริงที่ว่าโดยทั่วไปคุณสามารถรับอินพุตเป็นบิตแล้วสลับบิตบางส่วนเพื่อเปลี่ยนเป็นอักษรตรงกันข้าม

คำอธิบาย:

+>,+;>,;,+;>;;;+;+;+    Print the first letter by inverting the first and third bits of the input
                        'B' = 01000010
                        'G' = 11100010
                        This leaves the tape as
                            1 1 1 1' in the case of Bad
                            1 0 0 1' in the case of Good
                        By making the center cells the inverted bits
[;<;;;,;+;;+;<]         Print the center letters by looping over the two pairs of cells
                        0 1' results in 'a' = 10000110
                        1 1' results in 'o' = 11110110 by printing the 1 in the 2-4th places
                        1 1 1 1' loops twice, while 1 0 0 1' only loops once
;;+;+;;+;;+;            Finally print 'd' = 00100110


2

Keg , -rt 20 17 15 13 8 7 ไบต์ (SBCS)

-᠀‘5ƳP↫

ส่งไปที่:

from KegLib import *
from Stackd import Stack
stack = Stack()
printed = False
iterable(stack, 'GoodBad')
string_input(stack)
maths(stack, '-')

if not printed:
    printing = ""
    for item in stack:
        if type(item) in [str, Stack]:
            printing += str(item)
        elif type(item) == Coherse.char:
            printing += item.v

        elif item < 10 or item > 256:
            printing += str(item)
        else:
            printing += chr(item)
    print(printing)

มันเป็นพอร์ตของคำตอบ 05AB1E เป็นหลักมัน

  • กดสตริง "GoodBad"
  • รับอินพุตเป็นสตริง
  • ลบอินพุตจากสตริงที่พุช สิ่งนี้ทำงานโดยแทนที่อินสแตนซ์แรกของอินพุตภายในGoodBadด้วยอะไร
  • พิมพ์สตริงผลลัพธ์โดยปริยาย
  • -rtธงบอกถังอ่านราชสกุลจากขวาไปซ้าย

คำตอบประวัติ

?G=[øBad|ø‘5Ƴ

ส่งต่อไปนี้:

from KegLib import *
from Stackd import Stack
stack = Stack()
printed = False
Input(stack)
character(stack, 'G')
comparative(stack, '=')
if bool(stack.pop()):
    empty(stack)
    character(stack, 'B')
    character(stack, 'a')
    character(stack, 'd')

else:
    empty(stack)
    iterable(stack, 'Good')

if not printed:
    printing = ""
    for item in stack:
        if type(item) is Stack:
            printing += str(item)

        elif type(item) is str:
            printing += custom_format(item)
        elif type(item) == Coherse.char:
            printing += item.v

        elif item < 10 or item > 256:
            printing += str(item)
        else:
            printing += chr(item)
    print(printing)

คำอธิบาย

?G=[øBad|ø‘5Ƴ

?            #Get input from user
 G=          #If the first letter is "G"
   [øBad     #Clear the stack and push "Bad"
        |    #Else,
         ø‘5Ƴ#Clear the stack and push the compressed string "Good"

1
วิเศษมากฉันไม่สามารถเล่นกอล์ฟจนถึงความยาวนั้นได้ ... ฉันได้ตอบโต้คุณแล้ว

@A__ เช่นเดียวกับที่ฉันโหวตให้คุณ
Lyxal

คำตอบของฉันแย่กว่าคุณมาก คุณไม่ควร

มีเอกสารถังถึงวันที่หรือไม่?
EdgyNerd

@EdgyNerd ไม่ได้จริงๆ ไม่นานมานี้ตั้งแต่ฉันอัพเดตเอกสาร ข้อมูลส่วนใหญ่เกี่ยวกับสิ่งใหม่สามารถพบได้ในการแชท / ที่นี่
Lyxal

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