จากการเขียนโปรแกรมไขปริศนาไปจนถึง Code Golf


74

งานของคุณคือการเขียนโปรแกรมที่ส่งออกสตริงที่แน่นอนProgramming Puzzles (ขึ้นบรรทัดใหม่ทางเลือก) แต่เมื่อเว้นวรรคแท็บและบรรทัดใหม่ทั้งหมดจะถูกลบออกมันจะส่งออกCode Golf(ต่อท้ายขึ้นบรรทัดใหม่ก็ได้)

จำนวนไบต์ของคุณคือการนับของโปรแกรมแรกโดยยังมีช่องว่าง

หมายเหตุ

  • ช่องว่างในCode Golf และ Programming Puzzlesจะถูกลบออกเป็นส่วนหนึ่งของการลบดังนั้นวางแผนให้เหมาะสม

  • ในการเข้ารหัสโดยที่ 0x09, 0x0A และ 0x20 ไม่ใช่แท็บบรรทัดใหม่หรือช่องว่างตามลำดับตัวอักษรเหล่านั้นจะถูกลบ

  • หากรหัสของคุณคือ

    42  $@ rw$
    @42
    

    Programming Puzzlesแล้วที่ต้องเอาท์พุท นอกจากนี้ในภาษาเดียวกัน

    42$@rw$@42
    

    Code Golfการส่งออกต้อง

นี่คือดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์ชนะ! โชคดี!


3
พื้นที่ในCode Golfนั้นจะถูกลบออกProgramming Puzzlesด้วยหรือไม่
colsw

2
นี้จะเป็นไปไม่ได้อย่างน้อยวน และช่องว่าง
Engineer Toast

13
อะไรคือคะแนนปิดสำหรับ?
OldBunny2800

12
@ OldBunny2800 เป็นคำถามที่ดี ฉันถามต่อไป แต่ความคิดเห็นจะถูกลบออก ...
programmer5000

12
การโหวตอย่างใกล้ชิดมีไว้สำหรับการขาดอินพุตและเอาต์พุตและข้อ จำกัด เกี่ยวกับการจัดรูปแบบของอินพุตและเอาต์พุต 100% ถ้าคุณมีส่วนที่ระบุว่า "กฎ" พร้อมรายการหัวข้อย่อยที่คุณคิดว่าชัดเจนเกี่ยวกับความท้าทายที่คุณจะได้รับ 0 คะแนน มันคือทั้งหมดที่เกี่ยวกับการนำเสนอกับ CompSci folks ถ้าเราสามารถคิดถึงคำถามที่ดูเหมือนจะงี่เง่าเพื่อถามว่าอาจช่วยเราไบต์หรือเราจะพยายามที่จะตอบโต้ความโง่และคุณจะเป็นนักเขียนคำถามที่ดี
Magic Octopus Urn

คำตอบ:


65

Python 2 , 50 ไบต์

print["Code\40Golf","Programming Puzzles"][" ">""]

ลองออนไลน์!

เมื่อลบช่องว่างทั้งหมดแล้ว:

print["Code\40Golf","ProgrammingPuzzles"]["">""]

ลองออนไลน์สิ!

ขอบคุณ Stephen S เป็นเวลา 3 ไบต์และ Erik the Outgolfer สำหรับ 1


2
Darn, ninja'd! ฉันเพิ่งจะคลิกโพสต์คำตอบ! +1
HyperNeutrino

1
ฉันคิดว่าคุณแค่ทำลายสมองเพื่อนของฉัน มันใช้งานได้อย่างไร
Stevoisiak

11
@StevenVascellaro มันง่ายจริงๆ ในกรณีแรก" ">""ส่งคืนTrueเนื่องจาก lexicographically ช่องว่างมากกว่าสตริงว่าง ในกรณีที่สอง"">""ส่งคืนFalseเนื่องจากไม่มีสิ่งใดจะยิ่งใหญ่กว่าตัวเอง TrueและFalseมีความจริงเพียง1และ0ตามลำดับเพียง แต่ในboolประเภทข้อมูลแทนหรือint longในกรณีแรกช่องว่างจะถูกเก็บไว้ดังนั้นรายการที่ดัชนี 1 "Programming Puzzles"จะถูกส่งกลับคำต่อคำ ในกรณีที่สองช่องว่างจะหายไปดังนั้น\x20ในรายการที่ดัชนี 0 "Code\x20Golf"เพื่อรักษาช่องว่าง
Erik the Outgolfer

9
@StephenS Nope เพราะแตกต่างจาก JavaScript, Python ไม่ได้ครอบงำด้วยการคัดเลือกโดยปริยาย
Mego

1
หากพบว่างูหลามขาดสติครอบงำจิตใจ
John Dvorak


22

05AB1E , 15 ไบต์

”ƒËŠˆ”" "v”–±ÇÀ

ลองออนไลน์!

คำอธิบาย

”ƒËŠˆ”           # push "Code Golf"
      " "v       # for each character in the string " " do
          ”–±ÇÀ  # push "Programming Puzzles"
                 # implicitly output top of stack

... ฉันไม่เข้าใจเลย สิ่งนี้ใช้การบีบอัดพจนานุกรมหรืออะไรบางอย่าง?
LegionMammal978

@ LegionMammal978 ฉันค่อนข้างแน่ใจว่ามัน
NoOne อยู่ที่นี่

@ LegionMammal978: มันใช้การบีบอัดพจนานุกรม
Emigna

5
@Emigna โอเคเพราะฉันได้ตรวจสอบครั้งล่าสุดแล้วสตริงเหล่านั้นไม่สามารถใส่ลงใน 4 ไบต์: p
LegionMammal978

1
@ Draco18s: Kevin ได้เขียนบทแนะนำที่ดีในหน้าเคล็ดลับที่คุณสามารถใช้เพื่อให้เข้าใจถึงวิธีการใช้งานได้ดียิ่งขึ้น
Emigna


16

CJam , 38 ไบต์

" ""Programming Puzzles""Dpef!Hpmg":(?

ลองออนไลน์! หรือลบช่องว่าง

คำอธิบาย

" "                    e# Push this string.
"Programming Puzzles"  e# Push "Programming Puzzles".
"Dpef!Hpmg":(          e# Push "Dpef!Hpmg" and decrement each char, giving "Code Golf".
?                      e# If the first string is true (non-empty) return the second string,
                       e#   else return the third.

ไม่ว่าจะเป็นช่องว่างในโปรแกรมหรือไม่กำหนดว่าสายแรกเป็นความจริงหรือเท็จ


27
รหัสของคุณน่าเศร้า:(
Roman Gräf

14
หากคุณยินดีที่จะใช้ unprintables "Bncd\x19Fnke":)เป็นรหัสความสุขแทน (แทนที่\x19)
Erik the Outgolfer

15

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

“½ċṭ6Ỵ»ḷ
“Ñ1ɦ+£)G»

ลองออนไลน์!

คำอธิบาย

ในโปรแกรมตามที่เขียนไว้บรรทัดแรกคือฟังก์ชันตัวช่วยที่ไม่เคยทำงาน บรรทัดที่สอง (สุดท้ายในโปรแกรม) เป็นโปรแกรมหลักและเป็นการแสดงการบีบอัดของสตริง"Programming Puzzles"(ซึ่งถูกพิมพ์แล้วโดยปริยาย)

หากคุณลบ newline สิ่งทั้งหมดจะกลายเป็นหนึ่งในโปรแกรมขนาดใหญ่ คือการแสดงบีบอัดของสตริง“½ċṭ6Ỵ» ประเมิน แต่ไม่สนใจอาร์กิวเมนต์มือขวาปล่อยให้ค่าเดิมเหมือนเดิม มันสามารถใช้ในการประเมินฟังก์ชั่นสำหรับผลข้างเคียงของพวกเขา (สิ่งที่ฉันเคยทำมาก่อนตอนนี้) แต่มันยังสามารถใช้เช่นที่นี่เพื่อแสดงความคิดเห็นรหัสได้อย่างมีประสิทธิภาพ"Code Golf"

ที่น่าสนใจตรรกะจริงของที่นี่สั้นกว่ารายการ 05AB1E แต่รหัสโดยรวมออกมานานกว่าเนื่องจากตัวบีบอัดสตริงนั้นดีกว่าในการบีบอัดสตริงเฉพาะเหล่านี้


สิ่งนี้กลายเป็นสิ่งที่ถูกต้อง
Erik the Outgolfer

เพื่อความรู้ของฉันตัวละครเหล่านั้นบางตัวสามารถบันทึกได้โดยใช้หนึ่งไบต์โดยสมมติว่าการเข้ารหัสที่รู้จักกันดี ใน UTF-8 ฉันได้ 36 ไบต์ ... ฉันผิดหรือเปล่า
steffen

@steffen: Jelly ใช้การเข้ารหัสอักขระของตัวเองซึ่งอักขระทั้งหมด 256 ตัวที่ใช้สามารถจัดเก็บไว้ในไบต์เดียว (เหตุผลเดียวที่มันทำสิ่งนี้แทนที่จะใช้การเข้ารหัสที่มีอยู่แล้วนั้นคือเพื่อความสามารถในการอ่าน (!) คุณสามารถเขียนโปรแกรมที่เข้ารหัสเล็กน้อยพูด codepage 437 และมันจะทำงานในล่ามวุ้น แต่โดยทั่วไปแล้วจะเป็น อ่านยากมาก)

13

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

“Ñ1ɦ+£)G“½ċṭ6 Ỵ»Ṃ

ลองออนไลน์!

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

ในขณะที่คำตอบ Jelly อื่น ๆÑ1ɦ+£)Gและการ½ċṭ6Ỵเข้ารหัสสตริงProgramming ปริศนาและรหัสกอล์ฟ เริ่มต้นสตริงตัวอักษรและแยกสตริงหนึ่งเป็นอีกรูปแบบหนึ่งในขณะที่»เลือกชนิดของตัวอักษร (การบีบอัดตามพจนานุกรม) ดังนั้นอัตราผลตอบแทนนี้

["Programming Puzzles", "Code Golf"]

แล้วจะใช้เวลาต่ำสุดที่ยอมรหัสกอล์ฟ

อย่างไรก็ตามโดยการเพิ่มช่องว่างระหว่าง½ċṭ6และเราจะได้รับสายอักขระที่สองที่แตกต่างอย่างสิ้นเชิงและการประเมินตามตัวอักษร

["Programming Puzzles", "caird coinheringaahing"]

เนื่องจากcaird coinheringaahingมีขนาดเล็กกว่าพจนานุกรมจิ๊กซอร์ให้เลือกสตริงแรกแทน


ทำเช่นเดียวกันกับ“½ċṭ6Ỵ“Ñ1ɦ +£)G»Ṁ
Jonathan Allan

สำหรับความรู้ของฉันไม่สามารถบันทึกตัวละครเหล่านั้นโดยใช้หนึ่งไบต์สมมติว่าการเข้ารหัสที่รู้จักกันดี ใน UTF-8 ฉันได้ 34 ไบต์ ... ฉันผิดหรือเปล่า
steffen

@steffen Jelly ใช้หน้ารหัสที่กำหนดเองที่เข้ารหัสอักขระ 256 ตัวแต่ละตัวที่มันเข้าใจว่าเป็นไบต์เดียว
เดนนิส

@Dennis ขอขอบคุณสำหรับการชี้แจง
steffen

13

Javascript, 46 43 42 Bytes

x=>" "?"Programming Puzzles":"Code\40Golf"

console.log((x=>" "?"Programming Puzzles":"Code\40Golf")())
console.log((x=>""?"ProgrammingPuzzles":"Code\40Golf")())


5
คุณสามารถแทนที่\x20ในสตริงแรกด้วยช่องว่าง
Shaggy

เอาชนะฉันไปมันทำได้อย่างสวยงาม สิ่งนี้จำเป็นต้องมีการติดตาม;หรือไม่?
ricdesi

@ricdesi ไม่มันไม่ได้

3
@ricdesi เนื่องจากนี่เป็น codegolf หากโปรแกรมทำงานมันทำงานได้ ;บางครั้งไม่จำเป็นต้องใช้ใน JavaScript
สตีเฟ่น

2
คุณสามารถแทนที่\x20ด้วย\40เพื่อบันทึก byte :-)
ETHproductions

10

ภาษา Wolfram ขนาด 62 ไบต์

"Programming Puzzles"[ToExpression@"\"Code\\.20Golf\""][[0 1]]

พื้นที่ในการเป็นคูณโดยปริยายดังนั้นนี้จะเทียบเท่ากับ[[0 1]] [[0]]ไม่ต้องเว้นวรรค, เป็นเพียง01 1ส่วนที่ 1 และ 1 ของนิพจน์นี้คือสตริงที่เราต้องการ

โซลูชันอื่นของความถูกต้องที่น่าสงสัย (44 ไบต์, 2 บันทึกโดย Kelly Lowder):

"Programming Puzzles"["Code\.20Golf"][[0 1]]

การ\.20ถูกแทนที่ด้วยช่องว่างทันทีเมื่อพิมพ์ลงในสภาพแวดล้อม Mathematica ดังนั้นจึงไม่ชัดเจนว่าจะถูกลบออกพร้อมกับช่องว่างอื่น ...


1
ทันทีที่คุณวาง (หรือพิมพ์) สิ่งนี้ลงใน Mathematica (ลำดับเมฆหรือไม่) ลำดับการหลบหนี\:0020กลายเป็นช่องว่างและจะถูกลบออกดังนั้นฉันไม่แน่ใจว่าสิ่งนี้มีคุณสมบัติเหมาะสมหรือไม่ ยัง\.20สั้นกว่าด้วยอักขระสองตัว "Programming Puzzles"["Code"<>FromCharacterCode@32<>"Golf"][[01]]จะทำงาน.
Kelly Lowder

1
@ KellyLowder, อืมนั่นเป็นจุดที่ดี ฉันได้เพิ่มวิธีแก้ไขปัญหาอื่นที่ควรหลีกเลี่ยง (ขอบคุณสำหรับ\.20คำแนะนำ - คุณพบสิ่งนั้นได้อย่างไรฉันคิดว่าฉันจะกำจัดเอกสารทั้งหมด…)
ไม่ใช่ต้นไม้

1
ฉันพบ\.20โดยการพิมพ์ผิด ดูเหมือนว่าจะใช้ได้กับรหัสอักขระสองหลักเท่านั้น ฉันไม่คิดว่ามันอยู่ในเอกสารประกอบ
Kelly Lowder

8

Excel - 56 ไบต์

=IF(""=" ","Code"&CHAR(32)&"Golf","Programming Puzzles")

คล้ายกันมากกับคำตอบอื่น ๆ ... ไม่มีอะไรแฟนซีที่นี่


8

Haskell, 48 ไบต์

a _="Programming Puzzles";a4="Code\32Golf";f=a 4
a_="ProgrammingPuzzles";a4="Code\32Golf";f=a4

กำหนดฟังก์ชั่นfซึ่งส่งกลับสตริงที่สอดคล้องกัน

สำหรับการอ้างอิงรุ่นเก่าคือ:

Haskell, 49/47 ไบต์

f""="Code\32Golf";f(_)="Programming Puzzles";f" "

ด้วยการลบช่องว่าง

f""="Code\32Golf";f(_)="ProgrammingPuzzles";f""

การจับคู่รูปแบบง่าย ๆ สองแบบ (_)ตรงกับทุกรูปแบบ คุณสามารถปรับปรุงรุ่นที่ไม่มีช่องว่างได้ทีละหนึ่งไบต์โดยการกำหนดรูปแบบที่สองเป็นf" "=/ f""=แต่สิ่งนี้จะให้คำเตือน "การจับคู่รูปแบบซ้ำซ้อน"

โซลูชันทางเลือกที่มีจำนวนไบต์เดียวกัน:

last$"Code\32Golf":["Programming Puzzles"|" ">""]
last$"Code\32Golf":["ProgrammingPuzzles"|"">""]

7

โอห์ม , 33 32 ไบต์

ใช้การเข้ารหัส CP437

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀
▀4>~H├MS░l╬δ

ลองออนไลน์! หรือลองโดยไม่ต้องเว้นวรรค

คำอธิบาย

ด้วยช่องว่าง:

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀    Main wire

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀    Push "Programming Puzzles" (compressed string)
                       Implicitly output the top stack element


▀4>~H├MS░l╬δ           Helper wire (never called)

ไม่มีช่องว่าง:

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀▀4>~H├MS░l╬δ    Main wire

▀Bn¬i≈╣Ü╝Rb╡°╧S½uÇ▀                Push "Programming Puzzles" (compressed string)
                   ▀4>~H├MS░l╬δ    Push "Code Golf" (compressed string)
                                   Implicitly output top stack element

ฉันดีใจมากที่ฉันเสร็จสิ้นการบีบอัดสตริงในที่สุด!
Nick Clifford

1
@NickClifford สิ่งที่ฉันอยากรู้ก็คือCode Golfเมื่อบีบอัดได้นานขึ้น ฉันเดาว่าเป็นเพราะเมืองหลวง? ทางใดทางหนึ่งก็ยังสั้นกว่าการเขียนตามปกติเพราะฉันไม่สามารถใช้พื้นที่ตามตัวอักษรที่นี่
ธุรกิจ Cat

ใช่ Smaz เป็นคนแปลก ๆ เช่นนั้น
Nick Clifford

หากคุณมีคำถามหรือการร้องขอคุณสมบัติสำหรับ Ohm
Nick Clifford

7

Japt 29 ไบต์

มีช่องว่าง:

`Co¸{S}Golf`r `PžgŸmÚÁ Puzz¤s

ลองออนไลน์!

ไม่มีช่องว่าง:

`Co¸{S}Golf`r`PžgŸmÚÁPuzz¤s

ลองออนไลน์!


สิ่งนี้ใช้ประโยชน์จากความจริงที่ว่าใน Japt เว้นวรรคจะปิดการเรียกเมธอด ด้วยช่องว่างรหัสจะเท่ากับโค้ด JavaScript นี้โดยประมาณ:

("Code"+(S)+"Golf").r(),"Programming Puzzles"

สิ่งนี้ได้รับการประเมินว่าเป็น JavaScript และผลลัพธ์จะถูกส่งไปยัง STDOUT ตั้งแต่นิพจน์สุดท้ายคือ"Programming Puzzles"สตริงนั้นจะถูกพิมพ์

ไม่มีช่องว่างรหัสเทียบเท่ากับ:

("Code"+(S)+"Golf").r("ProgrammingPuzzles")

(หากคุณยังไม่ได้คิดออกมาตอนนี้Sตัวแปรจะเป็นช่องว่างเดียว) .r()วิธีการในสตริงหากมีอาร์กิวเมนต์หนึ่งรายการจะลบอินสแตนซ์ทั้งหมดของอาร์กิวเมนต์นั้นออกจากสตริง เนื่องจาก"Code Golf"ไม่มี"ProgrammingPuzzles"มันจะส่งคืน"Code Golf"ไม่เปลี่ยนแปลงซึ่งถูกส่งไปยัง STDOUT


ฉันไม่คิดว่าจะใช้การแทนที่ ทำได้ดีนี่!
ทอม

เพื่อความรู้ของฉันตัวละครเหล่านั้นบางตัวสามารถบันทึกได้โดยใช้หนึ่งไบต์โดยสมมติว่าการเข้ารหัสที่รู้จักกันดี ใน UTF-8 ฉันได้ 36 ไบต์ ... ฉันผิดหรือเปล่า
steffen

@steffen Japt ใช้การเข้ารหัส ISO-8859-1 ซึ่งอักขระแต่ละตัวแทนหนึ่งไบต์ แต่ตัวอักษรบางตัวอาจไม่สามารถพิมพ์ได้ในโปรแกรมนี้ดังนั้นฉันจึงใช้การเข้ารหัส Windows-1252 ที่นี่ (อันที่จริงมันสร้างโดยTIO )
ETHproductions

6

Brachylogขนาด 44 ไบต์

" "Ṣ∧"Programming Puzzles"w|"Code"wṢw"Golf"w

ลองออนไลน์!

คำอธิบาย

" "Ṣ                                           If " " = Ṣ (which is itself " ")
    ∧"Programming Puzzles"w                    Write "Programming Puzzles"
                           |                   Else
                            "Code"w            Write "Code"
                                   Ṣw          Write " "
                                     "Golf"w   Write "Golf"

1
ข้ามไปแล้ว 44 ยังคงเป็น 44 :( แก้ไข&nbsp;ทั้งสองด้านเพื่อแก้ไข :)
HyperNeutrino

@HyperNeutrino มันไม่ถูกขีดฆ่า 44 คือความยาวที่มีช่องว่างและ 42 ที่ไม่มี
ลดขนาด

โอ้ อ๊ะ มันคล้ายกันมากจนฉันไม่สามารถบอกได้โดยไม่มองที่เครื่องหมายลงไปในการแก้ไข ไม่เป็นไร: P
HyperNeutrino

5

อลิซ 44 ไบต์

/"floG!"t"edoC"#
 /"selzzuP gnimmargorP"d&o@

ลองออนไลน์!

ไม่มีช่องว่าง:

/"floG!"t"edoC"#/"selzzuPgnimmargorP"d&o@

ลองออนไลน์!

คำอธิบาย

ในโปรแกรมแรกทั้งสองมิเรอร์จะ/เปลี่ยนเส้นทางตัวชี้คำสั่งไปยังบรรทัดที่สอง "selzzuP gnimmargorP"ผลักคะแนนรหัสที่ต้องการตามลำดับกรอ, dผลักความลึกสแต็กและ&oพิมพ์ที่หลายไบต์ @ยุติโปรแกรม

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

"floG!"t"edoC"#"selzzuPgnimmargorP"d&o@

จะรวมถึงพื้นที่ในเราจะใช้เครื่องหมายอัศเจรีย์แทนและพร่องมันด้วยCode Golf tหลังจากที่เราได้คะแนนโค้ดทั้งหมดในสแต็กแล้วให้#ข้ามคำสั่งถัดไปซึ่งเป็นสตริงที่สองทั้งหมด d&oจากนั้นพิมพ์สแต็กอีกครั้งและ@ยุติโปรแกรม


คุณต้องตีกอล์ฟนี้ (มี 44 ข้อ 44)
MilkyWay90

5

PHP, 44 ไบต์

ผู้ประกอบการที่ประกอบไปด้วย

<?=" "?"Programming Puzzles":"Code\x20Golf";

PHP, 51 ไบต์

คิดเห็น

<?=/** /"Code\x20Golf"/*/"Programming Puzzles"/**/;

PHP, 57 ไบต์

สลับอาร์เรย์

<?=["Code\x20Golf","Programming Puzzles"][(ord("
")/10)];

5

Common Lisp (SBCL), 52 ไบต์

(format`,t"~[Programming Puzzles~;Code~@TGolf~]"0 1)

พิมพ์ Programming Puzzles

(format`,t"~[ProgrammingPuzzles~;Code~@TGolf~]"01)

พิมพ์ Code Golf

Ungolfed:

(format t "~[Programming Puzzles~;Code Golf~]" 0 1)

ชี้แจง:

เคล็ดลับนั้นมาจากการ#'formatทำงานใน Common LISP

ใน CL ช่องว่างส่วนใหญ่สามารถละเว้นได้หากไม่มีความกำกวมเกี่ยวกับที่โทเค็นเริ่มต้นหรือสิ้นสุด เคล็ดลับแรกคือการแยกformatและtสัญลักษณ์ ฉันต้องสิ้นสุดformatสัญลักษณ์อย่างไม่ต้องสงสัยโดยไม่เปลี่ยนวิธีการtตีความ โชคดีที่ `ใน CL สิ้นสุดโทเค็นก่อนหน้าก่อนที่จะได้รับการประมวลผลและ,ยกเลิกผลของ` (`ถูกใช้เพื่อสร้างเทมเพลตโดยที่นิพจน์ถัดไปจะได้รับ" ยกมา "แต่นิพจน์ย่อยถัดไปจะ,ถูกประเมินและ ผลลัพธ์ที่รวมอยู่ในเทมเพลตดังนั้น `เกือบจะไม่มีเลย)

อาร์กิวเมนต์ที่สามformatเป็นสตริงแม่แบบ formatคล้ายกับ printf ใน C แต่มีคำสั่งการจัดรูปแบบที่ทรงพลังกว่าและใช้ ~ เพื่อระบุแทน% ~ [และ ~] อนุญาตให้คุณเลือกระหว่างตัวเลือกหลายตัวเลือกสำหรับการพิมพ์ด้วย ~; แยกพวกเขา อาร์กิวเมนต์เพิ่มเติมจะได้รับการจัดรูปแบบ - ดัชนีตัวเลขที่คุณต้องการพิมพ์ เพื่อให้มั่นใจว่า "" ใน Code Golf ยังมีชีวิตอยู่ฉันใช้คำสั่งการจัดระเบียบ ~ T ซึ่งใช้ในการแทรกช่องว่างโดยทั่วไปเพื่อจัดแนวข้อความในคอลัมน์ ~ @ T เป็นรูปแบบที่เพิ่งแทรกจำนวนช่องว่างที่กำหนดเริ่มต้นที่ 1

ในที่สุดมีสองข้อโต้แย้งในการจัดรูปแบบ - 0 และ 1 ก่อนที่จะลบช่องว่าง, 0 ถูกใช้โดย ~ [~; ~] เพื่อเลือก "Programming Puzzles" และอาร์กิวเมนต์รูปแบบพิเศษ (1) ถูกทิ้ง (ฉัน) ไม่แน่ใจว่าอาร์กิวเมนต์รูปแบบพิเศษที่มีรูปแบบลดลงเป็นอย่างไร แต่สามารถใช้งานได้กับ Common Bank Lisp) หลังจากลบช่องว่างแล้วจะมีเพียงหนึ่งอาร์กิวเมนต์ (01) ที่เลือก "Code Golf" แทน


1
+1 มีเพียงสิ่งเดียว: "แต่นิพจน์ย่อยที่นำหน้าด้วย a ,จะได้รับการประเมินและต่อเชื่อมใน" ไม่,@จำเป็นสำหรับการต่อหรือไม่
PrzemysławP

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


4

C # 88 81 70 70 63 ไบต์

Func<string>@a=()=>" "==""?"Code\x20Golf":"Programming Puzzles";

ด้วยช่องว่างปล้น:

Func<string>@a=()=>""==""?"Code\x20Golf":"ProgrammingPuzzles";

ขอบคุณ BrianJ ที่แสดงวิธีไม่มีช่องว่างระหว่างชนิดการคืนเมธอดและชื่อวิธี PeterTaylor สำหรับการบันทึก7 18 ไบต์และ Patrick Huizinga สำหรับการบันทึก 7 ไบต์

วิธีการเดียวกับคนอื่นจริงๆในทางเทคนิคนี้อาจจะถือว่าไม่ถูกต้องเพราะวิธีการที่ไม่ได้ระบุประเภทผลตอบแทนสำหรับวิธีการ แต่มีมีจะเป็นช่องว่างระหว่างชนิดกลับและชื่อวิธีการ


1
คุณสามารถใส่คำนำหน้าชื่อฟังก์ชั่นได้@ดังนั้นคุณจึงควรvoid@a...หลีกเลี่ยงข้อผิดพลาดในการคอมไพล์ "no return type" (เพิ่มจำนวนไบต์ด้วย :()
Brian J

.Length<1บันทึกหนึ่งไบต์ \u0020ประหยัดหกถ้าฉันนับอย่างถูกต้อง; และคุณสามารถทำให้คำตอบที่ถูกต้อง (และบันทึกสองสามไบต์ในเวลาเดียวกัน) โดยการส่งแลมบ์ดาแทนที่จะเป็นฟังก์ชั่นระดับสูงสุด Func<string>a=()=>...
ปีเตอร์เทย์เลอร์

@BrianJ อืมไม่รู้เหมือนกันสงสัยว่าทำไมมันถึงใช้ได้จากคอมไพเลอร์จุดชมวิว อย่างไรก็ตามมันอาจเสียไบต์ แต่ในทางเทคนิคแล้วมันทำให้คำตอบนี้ไม่ใช่การแข่งขันดังนั้นมันจึงคุ้มค่า ขอบคุณ!
Skidsdev

@Mayube @ส่วนใหญ่จะใช้หากคุณต้องการใช้คำสงวนเป็นชื่อตัวแปร (เทียบเท่าจะล้อมรอบด้วย[]ใน VB.NET (และ MS SQL Server)
ไบรอัน J

1
ใช่มันต้องส่งคืนสตริง แต่ถ้าคุณใช้=>แทนคุณreturnไม่ต้องการช่องว่างใด ๆ (และแม้ว่าคุณจะใช้returnคุณก็สามารถทำได้return(...))
ปีเตอร์เทย์เลอร์

4

Java 8, 74 50 48 ไบต์

()=>" "==""?"Code\040Golf":"Programming Puzzles"

@Nonlinear ผลไม้คุณพูดถูกฉันได้เปลี่ยนคนนั้นให้เป็นคนที่ไม่มีความสามารถ
Khaled.K

1
ฉันไม่คิดว่าการพิมพ์เป็นข้อกำหนดดังนั้นคุณสามารถส่งคืนสตริงได้ ฉันยังไม่ได้ทดสอบ แต่==ผู้ควบคุมเครื่องควรทำงานเช่นกัน()=>""==""?"Code\u00A0Golf":"Programming Puzzles"
NonlinearFruit

1
\u00A0-> \040เพื่อการประหยัด 2 ไบต์
Poke





3

dc , 50

[pq]sm[Programming Puzzles]dZ19=m[Code]n32P[Golf]p

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

[ ]กำหนดสตริง - Zวัดความยาวของมัน หากความยาวเท่ากับ 19 จะมีช่องว่างและแมโครที่เก็บไว้ในการลงทะเบียน m จะถูกเรียกซึ่งจะพิมพ์Programming Puzzlesและออก มิฉะนั้นCode Golfจะถูกพิมพ์


คุณสามารถลิงค์ไปยัง dc interpreter / docs / github ได้ไหม?
programmer5000

@ programmer5000 เพียงเลือก dc บน TIO จากนั้นคลิกชื่อภาษา
Dennis

@ เดนนิสขอบคุณฉันไม่รู้ด้วยซ้ำว่า TIO ทำเช่นนั้น!
programmer5000


3

T-SQL, 96 82 81 67 ไบต์

print+iif(len(' x')=2,'Programming Puzzles','Code'+char(32)+'Golf')

ลองใช้ออนไลน์ | ไม่มีช่องว่าง

รุ่นเก่า (96 ไบต์):

select(case'x'when(replace(' ',' ','x'))then'Programming Puzzles'else'Code'+nchar(32)+'Golf'end)

เยี่ยมมากคุณสามารถไปถึง 67 ได้โดยการสูญเสีย parens ด้านนอกและเปลี่ยนเงื่อนไขเป็นiif(len(' x')=2
BradC

@BradC ปิด printแต่วงเล็บด้านนอกป้องกันไม่ต้องการพื้นที่หลัง ฉันใช้+แทนและใช้งานได้
mbomb007

ต้องวางและนับผิด และฉันก็ไม่รู้เหมือนกัน แต่ข้อดีคือตัวละครตัวแรกที่ฉันลองและมันใช้ได้
mbomb007

3

Perl 5 , 43 41 ไบต์

say" "?"Programming Puzzles":Code.$".Golf

ลองออนไลน์!

ใช้ความจริงที่' 'เป็นจริงใน Perl และ''เป็นเท็จ $"ตัวแปรถูกตั้งค่าให้พื้นที่โดยการเริ่มต้น

ขอบคุณ @NahuelFouilleul สำหรับการลบสองไบต์


อาจจะช้า แต่"Code$\"Golf"ก็สั้นและCode.$".Golfเกินไป
Nahuel Fouilleul

@NahuelFouilleul ใช่ฉันค่อนข้างใหม่เมื่อฉันเขียนคำตอบนี้ ขอบคุณนะ!
คริส


2

Befungeขนาด 76 ไบต์

" "0`#v_"floG"84*"edoC",,,,,,,,,@
,,,,,@>"selzzuP gnimmargorP",,,,,,,,,,,,,,

ลองออนไลน์!

ไม่ใช่โซลูชันที่กะทัดรัดที่สุด แต่จากนั้นการเขียนโค้ด Befunge อีกครั้งโดยไม่มีช่องว่างนั้นเป็นเรื่องยาก

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


พวก,เขาทำอะไร
programmer5000

@ programmer5000 แต่ละคนพิมพ์อักขระหนึ่งตัว
Martin Ender

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