พิมพ์“ ทิศตะวันตกเฉียงเหนือทิศตะวันตกเฉียงเหนือทิศตะวันตกเฉียงเหนือ "


47

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

ชื่อกล่าวมันทั้งหมด คุณเพียงแค่ต้องเขียนโปรแกรมหรือฟังก์ชั่น (ไม่มีข้อโต้แย้ง) ที่ส่งคืนหรือพิมพ์:

N NE E SE S SW W NW

คุณสามารถใช้การขึ้นบรรทัดใหม่แทนการเว้นวรรค

ฟังก์ชั่นไม่มีข้อโต้แย้งส่งกลับอาร์เรย์ของสตริงเช่น

['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']

ยังเป็นที่ยอมรับ

ตัวอักษรอาจเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก แต่ไม่สามารถผสมกันได้


9
บางทีการอนุญาตให้พวกเขาแสดงผลในลำดับใด ๆ ก็น่าสนใจกว่าเล็กน้อย
โจคิง

3
@ โจกิ้งแน่นอนว่าฉันจะลบมัน สุจริตฉันไม่ได้คาดหวังให้ใครส่งคำตอบที่ใช้คุณค่าตามตัวอักษรอย่างแท้จริง - นั่นไม่ได้อยู่ในจิตวิญญาณของคำถาม ขณะที่ฉันพูดมันขึ้นมาเพราะฉันไม่สามารถเอาชนะตัวอักษรใน J ได้แม้ว่าสตริงนั้นจะมีระเบียบและโครงสร้างของการเรียงลำดับ จุดรวมคือการใช้ประโยชน์จากความสม่ำเสมอที่จะชนะคำตอบที่แท้จริง แย่สำหรับฉันที่ไม่ชัดเจนมากขึ้น การอนุญาตให้พวกเขามีคำสั่งใดที่จะเอาชนะได้เช่นกันดังนั้นฉันไม่ต้องการเปลี่ยนแปลง
Jonah

3
@UnrelatedString ความคิดที่มีแนวโน้มมากที่สุดที่ฉันเคยมีที่จะทราบว่าทิศทางที่สอดคล้องกับฉัน0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5ยกอำนาจ น่าเสียดายที่รหัส J จำเป็นต้องใช้เพื่อจับคู่ผลลัพธ์เหล่านั้นเป็นตัวอักษรซึ่งมีราคาแพงกว่าตัวอักษร
โจนาห์

1
อ่าฉลาด! ฉันสงสัยว่าการทำแผนที่อาจทำงานได้ดีขึ้นสำหรับจำนวนเต็มแบบเกาส์เซียน1, 1+i, i, -1+i, -1, -1-i, -i, 1-iดังนั้นคุณจึงได้ส่วนจริงหรือจินตภาพต่อทิศทางเชิงเลขแทนที่จะเป็นสองส่วน มันอาจจะยากที่จะสร้างสิ่งเหล่านั้นแม้ว่าจะมีวิธีที่คุณสามารถปัดเศษพลังของiออกจาก 0 ได้ไหม? ฉันไม่รู้ว่าจะง่ายหรือยากที่จะอยู่ใน J แต่มันเป็นความคิด
สตริงที่ไม่เกี่ยวข้อง

3
รู้สึกเหมือนว่ารายการต่าง ๆ ควรแสดงเวอร์ชั่น "echo สตริงนี้" ที่ไร้เดียงสาในภาษาของพวกเขาเพื่อทำการเปรียบเทียบและการตัดสินบน% ย่อ
Dewi Morgan

คำตอบ:


18

Canvas ขนาด 12 ไบต์

>X½+T)AuS{⁹‟

ลองที่นี่!

สตริงที่บีบอัดเพียง


2
คุณช่วยอธิบายวิธีการทำงานของรายละเอียดเพิ่มเติมได้ไหม?
Dillanm

2
@Dillanm ไม่มีอะไรจะพูดอีกมากมาย - Canvas มี built-in compressor (ควรเข้าถึงได้ด้วย ctrl + o → string compression) ที่นี่เพียงเก็บอักขระที่ต้องการ ( "NESW ") จากนั้นเก็บในฐานที่ 5 ตัวละคร
dzaima

56

ทุบตี (24 ไบต์)

ใช้วงเล็บปีกกา

echo N {N,,S}E S {S,,N}W

มีความยาวเท่ากับการเข้ารหัสฮาร์ด

echo N NE E SE S SW W NW

อย่างไรก็ตามมันน่าสนใจยิ่งขึ้นเมื่อส่งออกคะแนนของเข็มทิศมากขึ้น

echo N NNE NE ENE E ESE SE SSE S SSW SW WSW W WNW NW NNW

รั้งการขยายตัว

echo N {{N,,E}N,,{E,,S}S}E S {{S,,W}S,,{W,,N}N}W

มิฉะนั้นหากคำสั่งซื้อสามารถเปลี่ยนแปลงได้ (17 ไบต์) เคล็ดลับก็คือหากไม่มีเครื่องหมายคำพูดพารามิเตอร์สตริง empy จะหายไป

echo {N,,S}{W,,E}

1
นั่นเป็นเรื่องที่น่าสนใจฉันไม่ทราบว่าคุณสามารถมีตำแหน่งว่างได้นั่นคือการแสดงออกรั้ง!
ข้อบกพร่อง

1
@flawr มีประโยชน์เมื่อ chrooting:mount -t proc{,,}
gronostaj

7
หรือcp file{,.bak}
Oliphaunt

43

Mornington Crescent , 4395 3823 ไบต์

Take Northern Line to Bank
Take District Line to Parsons Green
Take District Line to Paddington
Take Bakerloo Line to North Wembley
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Barbican
Take Circle Line to Bank
Take Circle Line to Aldgate
Take Circle Line to Embankment
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Bakerloo Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Bayswater
Take Circle Line to Hammersmith
Take Circle Line to Baker Street
Take Circle Line to Bank
Take Circle Line to Embankment
Take Northern Line to Stockwell
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Farringdon
Take Circle Line to Hammersmith
Take Circle Line to Blackfriars
Take Circle Line to Bank
Take Circle Line to Moorgate
Take Northern Line to Waterloo
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Westminster
Take Circle Line to Hammersmith
Take Circle Line to Tower Hill
Take Circle Line to Bank
Take Circle Line to Edgware Road
Take Circle Line to Liverpool Street
Take Central Line to Mile End
Take District Line to Victoria
Take Victoria Line to Seven Sisters
Take Victoria Line to Victoria
Take Circle Line to Victoria
Take District Line to Mile End
Take District Line to Bank
Take Circle Line to Bank
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Charing Cross
Take Northern Line to Bank
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Barbican
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Bayswater
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Baker Street
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Farringdon
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Embankment
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Blackfriars
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Moorgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Westminster
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Tower Hill
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Hammersmith
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Aldgate
Take Circle Line to Paddington
Take Circle Line to Paddington
Take Circle Line to Edgware Road
Take Circle Line to Paddington
Take Circle Line to Bank
Take Circle Line to Bank
Take Northern Line to Mornington Crescent

ลองออนไลน์!

เนื่องจากมันค่อนข้างจะคาดหวังให้คุณอ่านทุกอย่างฉันขอให้ภาพรวมอย่างรวดเร็วเกี่ยวกับวิธีการของฉัน แนวคิดหลักคือการเก็บ 3 ชุดของตัวละครN, E, S,Wที่สถานีต่าง ๆ บนเส้นวงกลมผ่านธนาคาร - แฮมเมอร์ อักขระเหล่านี้ถูกสร้างขึ้นจากจุดเริ่มต้นของชื่อสถานีที่ Charing Cross จากนั้นสร้าง  จากชื่อสถานีที่ได้รับการแต่งตั้งเป็นอย่างดีโดยใช้ Mile End และ Charing Cross และเก็บไว้ที่ธนาคารเพื่อให้สามารถรวบรวมได้ที่ Hammersmith ในการต่อสาย ในที่สุดเชื่อมต่ออักขระทีละตัวที่ Paddington คัดลอกอักขระเหล่านั้นอีกครั้งผ่าน Bank - Hammersmith หากพวกเขาจำเป็นต้องนำกลับมาใช้ใหม่ในภายหลัง


ฉันคิดว่าวิธีแก้ปัญหาในปัจจุบันใกล้เคียงกับกลยุทธ์นี้อย่างเหมาะสมที่สุดอย่างน้อยก็ในแง่ของจำนวนสถานีที่เข้าชม: แค่ 2 ครั้งฉันใช้สถานี เพื่อการเปลี่ยนเครื่องเท่านั้น :

  1. เพื่อไปที่ Seven Sisters (ผ่านสถานี Victoria)
  2. และกลับไปที่ Mornington Crescent (ผ่านทางธนาคาร)

การเยี่ยมชมสถานีอื่น ๆ ทั้งหมดคือถ้าฉันไม่ลืมอย่างใดอย่างหนึ่งไม่ว่าจะเป็นการจัดเก็บ / เรียกสิ่งที่มีประโยชน์หรือ (บางส่วน) โดยใช้ความสามารถของสถานี

สำหรับความยาวของบรรทัดฉันพยายามเลือกชื่อที่สั้นที่สุดบน Circle Line แต่อาจมีการปรับปรุงเล็กน้อย เป็นไปได้ว่าการจัดเก็บบางอย่างใน District สามารถกำจัดออกไปสองสามไบต์


สองแนวคิดในการเล่นกอล์ฟนี้เพิ่มเติม: 1. ใช้ 'NE', 'SW', 'NW', 'SE' จากสถานีเดียว (โดยใช้เช่นNeasden, Swiss Cottage, Acton To wnและ Mansion Hou se) 2. ลองใช้ประโยชน์จาก ความจริงที่ว่าแพดดิงตันทำให้ง่ายต่อการเชื่อม `` W W มากกว่า สิ่งนี้ต้องการค่าใช้จ่ายเพิ่มเติมในการ 'รีเฟรช' แพ็ดดิงตันดังนั้นจึงอาจไม่ได้รับอะไรเลย
จิ้งจกไม่ต่อเนื่อง

4
สิ่งนี้ใช้กฎลูป Dollis Hill หรือไม่? ถ้าเป็นเช่นนั้นฉันคิดว่ามันสามารถปรับปรุงได้ด้วยการใช้พาราโบลาอาร์ไกล์ถนนและอาจเป็นโพรโทคอล Webb-Ellis รุ่นดัดแปลงเล็กน้อย
Richard Ward


24

brainfuck , 142 139 131 119 ไบต์

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

ลองออนไลน์!

เพียงลูป 10 ครั้งเพื่อเติมเซลล์ด้วย 30, 70, 80 และ 90 จากนั้นก้าวถอยหลังไปข้างหน้าและไปข้างหน้าและปรับค่าเซลล์เพื่อพิมพ์อักขระที่ต้องการ ไม่แตกต่างจากมาตรฐาน "Hello world!" มากนัก


7
ฮ่า ๆ ฉันไม่เคยเข้าใจว่าทุกคนสามารถ "กอล์ฟ" ภาษาที่คลุมเครือ มันยากพอที่จะเข้าใจว่าโค้ดทำอะไรในตอนแรก (มันบอกว่ามาจากพื้นหลัง C ++ / Java)
mackycheese21

10
@ mackycheese21 อะไรนะ? C ++ ไม่ได้สอนให้คุณหลงรักการโกงตัวชี้?
candied_orange

12
brainfuck อาจเป็นความลับ แต่ฉันแน่ใจว่าจะไม่เรียกว่าคลุมเครือ
Unrelated String

3
@candied_orange C ++ สอนให้ฉันเกลียดการบิดเบือนตัวชี้และวิ่งหนีเมื่อใดก็ตามที่มีคนพูดถึง std :: :)
mackycheese21

1
@ UnrelatedString ปิดบังไม่มี ป้านใช่
รวย




10

Excel Formula, 59 57 ไบต์

ควรป้อนข้อมูลต่อไปนี้เป็นสูตรอาร์เรย์ ( Ctrl+ Shift+ Enter):

=SUBSTITUTE(ADDRESS(1,{14,369,5,499,19,517,23,387},4),1,)

หลังจากป้อนสูตรเป็นสูตรอาร์เรย์ให้ไฮไลต์ลงในแถบสูตรและประเมินโดยใช้F9เพื่อส่งคืนผลลัพธ์ตัวอย่างเช่น:

ก่อน:
Before formula evaluation

หลังจาก:
Before formula evaluation

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

ADDRESSฟังก์ชันส่งกลับสตริงที่แสดงอ้างอิงขึ้นอยู่กับสองพารามิเตอร์และrow colพารามิเตอร์ที่สามควบคุมชนิดของการอ้างอิงที่ถูกส่งคืนการอ้างอิงแบบสัมบูรณ์หรือการอ้างอิงแบบสัมพัทธ์ ตัวอย่างเช่น=ADDRESS(1,2,4)ผลตอบแทน"B1"ผลตอบแทน

เราสามารถจัดหาอาร์เรย์เพื่อADDRESSใช้เป็นสูตรอาร์เรย์เพื่อให้ได้ผลลัพธ์หลายตัวอย่างเช่นผลตอบแทน=ADDRESS(1,{1,2,3},4)"A1","B1","C1"

ดังนั้นในคำตอบของฉันอาร์เรย์ที่ให้ADDRESSเป็นเพียงหมายเลขคอลัมน์ที่เกี่ยวข้องกับจุดเข็มทิศที่ต้องการเช่นคอลัมน์ 14 คือคอลัมน์Nคอลัมน์ 369 คือคอลัมน์NEเป็นคอลัมน์

N1อย่างไรก็ตามเรายังไม่เสร็จที่นี่ตั้งแต่อ้างอิงทั้งหมดกลับมาได้แถวรวมตัวอย่างเช่น NE1, ดังนั้นเราเพียงแค่ใช้SUBSTITUTEเพื่อลบออก1จากการอ้างอิงทั้งหมด


1
จะ=IF(1,"N NE E SE S SW W NW")ใช้ได้ไหม
Reinstate Monica

3
@squid ใช่มันจะแน่นอน! อย่างไรก็ตามฉันจะหาทางเลือกที่ไม่ต้องการสตริงที่จะอ้างคำต่อคำ
i_saw_drones

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

@anatolyg ฉันได้เพิ่มส่วนคำอธิบายหวังว่าจะเข้าใจได้
i_saw_drones


7

ถ่าน 14 ไบต์

”{⊟“�_Zn↖⦄RüΦ≦

ลองออนไลน์! การเชื่อมโยงคือรหัสรุ่นที่ละเอียด ... ซึ่งเป็นเพียงสายอักขระที่จะพิมพ์เนื่องจาก auto-deverbosifier จะดูแลการบีบอัดสตริง

การพิมพ์สตริงที่ไม่มีการบีบอัดใช้เวลา 19 ไบต์เนื่องจาก Charcoal พิมพ์ ASCII ที่พิมพ์ได้อย่างแท้จริง คำตอบอัลกอริทึมที่ดีที่สุดที่ฉันสามารถทำได้ แต่น่าเสียดายที่ใช้เวลา 20 ไบต์:

E⁸ΦSNWE›³﹪⁻﹪⁺⁵×⁶μχι⁸

ลองออนไลน์! เอาท์พุทที่ใช้รูปแบบอาร์เรย์ (จะมีค่าใช้จ่ายสองไบต์เพื่อเข้าร่วมองค์ประกอบในช่องว่าง) ทำงานโดยสังเกตเห็นว่าตัวอักษรของสตริงSNWEจะใช้เฉพาะเมื่อดัชนีนอกปัจจุบันเท่ากับหรือ 1 ห่าง (โมดูโล 8) 4,0,6,2ในทิศทางใดทิศทางหนึ่งจากองค์ประกอบที่สอดคล้องกันของรายชื่อของดัชนี


7

brainfuck , 117 ไบต์

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

ลองออนไลน์!

รหัสนี้จะสร้างอักขระ "EN SW" ลงในหน่วยความจำก่อนจากนั้นเลื่อนไปมาเพื่อพิมพ์ ช่องว่างอยู่ตรงกลางเพราะพิมพ์บ่อยที่สุด N และ S และ W และ E ไม่เคยปรากฏมาพร้อมกันดังนั้นจึงอยู่ด้านตรงข้ามของหน่วยความจำ สำหรับการปรับให้เหมาะสมการลดลงครั้งสุดท้ายบางอย่างเกิดขึ้นในช่วงเอาท์พุท


1
ตกลงนั่นเป็นคำตอบที่ยอดเยี่ยม คิดว่าคุณชนะฉันในนี้ +1 สำหรับ -1 :-)
ElPedro

1
BTW ลืมบอกว่ายินดีต้อนรับสู่เว็บไซต์ Code Golf รอคอยที่จะแข่งขันกับคุณในอนาคต☺
ElPedro

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

1
ขอบคุณฉันสามารถเพิ่มคำอธิบายของรหัสของฉัน ฉันจะพยายามเข้าใจวิธีการทำงานของลิงค์ออนไลน์
เฮเลนา

1
@Helena สำหรับลิงค์คุณสามารถตรวจสอบลิงค์ "ลองออนไลน์" ในคำตอบของฉัน หากคุณวางรหัสของคุณและเรียกใช้คุณสามารถคลิกที่ไอคอนลิงก์และรับคำตอบที่สมบูรณ์ของรูปแบบการเล่นกอล์ฟที่คุณสามารถคัดลอกและวางที่นี่ ทำงานเหมือนเวทมนตร์และรองรับหลายภาษา คุ้มค่าที่จะลอง
ElPedro


5

เยลลี่ ,  16  15 ไบต์

“¤œỵpq⁵’ṃ“NESW 

โปรแกรมเต็มรูปแบบการพิมพ์ข้อความ

ลองออนไลน์!


16 ...

“¥Þ¡¦¢¬£æ‘ṃ“¡ɱ⁻»

ลิงก์ niladic ซึ่งให้รายการของรายการอักขระ (ตัวพิมพ์เล็ก)

ลองออนไลน์!


ทางเลือก 15 เป็นลิงก์ niladic ที่ทำให้รายการของตัวอักษร (ตัวพิมพ์เล็ก) (กับช่องว่าง) “¡XÇŀqỵÑ’ṃ“¡⁴ṁ»ที่อยู่:


5

Commodore BASIC (TheC64Mini, C64, C128, VIC-20 และอื่น ๆ ) 28 ไบต์ที่ใช้โทเค็นพื้นฐาน

 0 PRINT"N NE E SE S SW W NW

ใน Commodore BASIC คุณไม่จำเป็นต้องใช้เครื่องหมายอัญประกาศปิดในPRINTหรือLETคำสั่งเนื่องจากล่ามจะปิดอัตโนมัติซึ่งจะบันทึกโทเค็นพื้นฐานหนึ่งรายการ

หรืออีกวิธีหนึ่งอาจใช้โหมดโดยตรงดังนี้:

Commodore อักขระ BASIC 23 PETSCII (+ RETURNเพื่อดำเนินการ)

?"N NE E SE S SW W NW

ฉันไม่แน่ใจว่าจะนับจำนวนไบต์ที่ใช้ในอินสแตนซ์นี้ตามล่าม?และPRINTใช้จำนวนไบต์เท่ากันได้อย่างไรและไม่มีโปรแกรมเก็บไว้ในหน่วยความจำ


1
PRINTสามารถถูกแทนที่ด้วย?เช่นกันประหยัดสี่ไบต์
James

1
ไม่นั่นไม่ใช่ความจริง PRINTและ?ใช้โทเค็นพื้นฐานจำนวนเท่ากัน ฉันไม่ได้นับตัวอักษร PETSCII เพราะมันไม่ได้เป็นตัวแทนของหน่วยความจำที่มีอยู่เท่าไหร่ที่ล่ามใช้อยู่
Shaun Bebbers

1
หลังจากหลายปีที่ผ่านมาฉันยังคงเรียนรู้สิ่งใหม่เกี่ยวกับ Commodore ขอบคุณฌอน! c64-wiki.com/wiki/BASIC_token
James

นี่คือสิ่งที่ฉันทำก่อนหน้านี้ (สำหรับ C64) -> pastebin.com/NMYzTC7k
Shaun Bebbers

4

Japt , 16 ไบต์

ส่งคืนอาร์เรย์ของสตริงตัวพิมพ์เล็ก สตริงที่บีบอัดมีขนาด 18 ไบต์ แต่ใช้aเป็นตัวคั่นแทนจากนั้นจึงแยกส่วนที่สั้นกว่าออก

`nÂà!Z°°nw`qa 

ลองใช้ - ส่วนท้ายจัดรูปแบบผลลัพธ์


4

เดดฟิช ~ , 138 ไบต์

{{i}i}c{{d}}cs{i}c{d}ic{{d}}iisicsic{{d}}iisicisddddddc{d}ddddc{{d}}iisicisddddddc{{iiii}}sicisddddddciiiic{{d}d}icisddc{{d}d}ics{i}c{i}dc

ลองออนไลน์!

ดังนั้นการแสดงผลในกรณีที่ต่ำกว่าด้วยการขึ้นบรรทัดใหม่จะดีกว่าค่าเริ่มต้น (ตัวพิมพ์ใหญ่ที่มีช่องว่าง)

รหัสนี้สร้างขึ้นโดยโปรแกรมเพิ่มประสิทธิภาพของฉันเขียนด้วย C ++ (ขอบคุณsquidสำหรับแนวคิดการเพิ่มประสิทธิภาพอื่น!):

#include <iostream>
#include <string>
#include <queue>
#include <vector>


int eval(const std::string& actions, int result)
{
    int mult = 1;

    for (int i = 0; i < (int)actions.length(); ++i)
    {
        switch (actions[i])
        {
        case 's':
            result *= result;
            if (result == 256)
                result = 0;
            break;

        case '{':
            mult *= 10;
            break;

        case '}':
            mult /= 10;
            break;

        case 'd':
            if (result > 256 && result - mult <= 256)
                result = (result - mult) % 256;
            else
                result -= mult;
            break;

        case 'i':
            if (result < 256 && result + mult >= 256)
                result = (result + mult) % 256;
            else
                result += mult;
            break;
        }
    }

    return result;
}

struct worse
{
    bool operator()(const std::string& a1, const std::string& a2)
    {
        return a1.length() > a2.length();
    }
};

std::string BestStr(int accumulator, int target)
{
    std::priority_queue<std::string, std::vector<std::string>, worse> actions;
    actions.push(std::string(""));
    while (true)
    {
        std::string a = actions.top();
        int new_acc = eval(a, accumulator);
        if (new_acc == target)
            return a + "c";

        actions.pop();

        int last_braces = 0;
        int i = a.length() - 1;
        while (i >= 0 && a[i] == '}' && last_braces < 2)
        {
            ++last_braces;
            --i;
        }
        bool is_last_i = (i >= 0 && a[i] == 'i');
        bool is_last_d = (i >= 0 && a[i] == 'd');
        bool may_add_braces = (i < 0 || a[i] == 's');
        bool may_add_c = (new_acc > 1 && new_acc < 30);

        if (may_add_c)
        {
            actions.push(a + "s");
        }
        if (may_add_braces)
        {
            actions.push(a + "{{}}");
            actions.push(a + "{}");
        }
        for (int braces_back = 0; braces_back <= last_braces; ++braces_back)
        {
            for (int c = 'd'; c <= 'i'; c += 'i' - 'd')
            {
                if ((!is_last_i || c == 'i') &&
                    (!is_last_d || c == 'd') ||
                    braces_back == 0)
                {
                    std::string new_actions = a;
                    new_actions.insert(new_actions.length() - braces_back, 1, (char)c);
                    actions.push(new_actions);
                }
            }
        }
    }
}

std::string DeadfishConvert(std::string s)
{
    std::string result;
    int accumulator = 0;

    for (int c: s)
    {
        result += BestStr(accumulator, c);
        accumulator = c;
    }
    return result;
}

int main()
{
    std::string s1 = DeadfishConvert("N NE E SE S SW W NW");
    std::cout << s1 << '\n';
    std::cout << s1.length() << '\n' << '\n';
    std::string s2 = DeadfishConvert("n ne e se s sw w nw");
    std::cout << s2 << '\n';
    std::cout << s2.length() << '\n' << '\n';
    std::string s3 = DeadfishConvert("N\nNE\nE\nSE\nS\nSW\nW\nNW");
    std::cout << s3 << '\n';
    std::cout << s3.length() << '\n' << '\n';
    std::string s4 = DeadfishConvert("n\nne\ne\nse\ns\nsw\nw\nnw");
    std::cout << s4 << '\n';
    std::cout << s4.length() << '\n' << '\n';
}


4

ไฟล์แบตช์ 19 ไบต์

คำถามไม่เคยระบุว่าคุณต้องออกN NE E SE S SW W NWและไม่มีอะไรอื่นและไม่สามารถออกได้เนื่องจากข้อผิดพลาดหลังจากทำเช่นนั้นรหัสนี้เพียงโยนข้อผิดพลาด แต่ไม่ออกเนื่องจากมัน

N NE E SE S SW W NW

เอาท์พุต

>N NE E SE S SW W NW
'N' is not recognized as an internal or external command,
operable program or batch file.

ไฟล์แบตช์ 25 ไบต์

N NE E SE S SW W NWเอาต์พุตเท่านั้นโดยไม่มีข้อผิดพลาดหรือขัดข้อง

@echo N NE E SE S SW W NW

คุณสามารถบันทึกไบต์แทนแผ่นซีดีด้วยคำพูดเช่น'N NE E SE S SW W NW'- คุณจะได้รับสิ่งที่ชอบ: N NE E SE S SW W NW - command not found
Dewi Morgan

4

Python2, 59 ไบต์

''.join(' SEWN'[0xe0619042210504>>i*3&7]for i in range(19))

เลขอาถรรพ์คือดัชนีสามบิตที่รวมเข้าด้วยกันในสตริงอักขระเรียงลำดับแบบย้อนกลับเพื่อให้เราสามารถเริ่มต้นทำซ้ำที่ LSB


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

''.join('WN S ES W xxE '[0x423659711>>i*2&15]for i in range(19))

ทำไมถึงทำให้ ir ง่ายเมื่อคุณสามารถทำให้มันซับซ้อน? :-)
GB

4

K (ngn / k) , 23 22 ไบต์

-1 ไบต์ขอบคุณ ngn!

"WNES"@5\7108085518230

ลองออนไลน์!

J , 34 30 ไบต์

echo(#:3510)<;.1'NNEESESSWWNW'

ลองออนไลน์!


เลนสำหรับเจก้องตัวอักษรจะสั้นกว่า ฉันชอบที่จะเห็นจังหวะนั้น ... ฉันไม่สามารถทำมันได้
โยนาห์

1
ใช่การสะท้อนจะเป็น 4 + 19 ไบต์ ฉันไม่มีความคิดที่ดีกว่านี้
Galen Ivanov

1
สำหรับ k: ถ้าเราสลับ" "<-> "W"( 0<-> 4ในฐาน 5) ช่องว่างจะสิ้นสุดและเราสามารถลบออกได้เนื่องจากการจัดทำดัชนีสตริงนอกขอบเขตให้พื้นที่อยู่แล้ว:"WNES"@5\7108085518230
ngn

@ngn ขอบคุณ!
Galen Ivanov

1
@GalenIvanov ดีสำหรับฐานข้อมูลด้านบนที่มีประสิทธิภาพมากเกินไป :) อาเธอร์ได้รับการออกแบบ k เป็นภาษาพื้นฐานสำหรับkdb +
NGN


3

Brachylogขนาด 19 ไบต์

"NNEESESSWWNW"ḍ₄ḍᵐc

ลองออนไลน์!

เอาท์พุทเป็นรายการ ḍ₄ḍᵐcบันทึกสองไบต์ไปเขียนเจ็ดช่องว่างและทำให้ภาคทั้งหมดสตริงตัวอักษรดังนั้นอย่างน้อยก็ผูก PHP ...

"NNEESESSWWNW"         The string "NNEESESSWWNW"
              ḍ₄       split into quarters
                 ᵐ     with each quarter
                ḍ      split in half
                  c    and concatenated
                       is the output.

ฉันพยายามที่จะฉลาด3⟦{;"NESW"↺₍h₂a₀ᶠ}ᵐcแต่มันไม่สามารถรับ SE หรือ NW ได้และเป็นไบต์อีกต่อไป


3

ช่องว่าง , 151 ไบต์

[S S S T    T   N
_Push_3_W][S S T    T   T   S N
_Push_-6_N][S S T   T   T   S T S S N
_Push_-52_space][S S S T    T   N
_Push_3_W][S T  S S T   N
_Copy_0-based_1st_(space)][S S S T  T   N
_Push_3_W][S S T    T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   N
_Push_-1_S][S T S S T   N
_Copy_0-based_1st_(space)][S S T    T   T   T   T   N
_Push_-15_E][S S T  T   N
_Push_-1_S][S T S S T   S N
_Copy_0-based_2nd_(space)][S T  S S T   S N
_Copy_0-based_2nd_(E)][S T  S S T   N
_Copy_0-based_1st_(space)][S T  S S T   N
_Copy_0-based_1st_(E)][S S T    T   T   S N
_Push_-6_N][S T S S T   S N
_Copy_0-based_2nd_(space)][S S T    T   T   S N
_Push_-6_N][N
S S N
_Create_Label_LOOP][S S S T S T S T S S N
_Push_84][T S S S _Add][T   N
S S _Print_as_character][N
S N
N
_Jump_to_Label_LOOP]

เพิ่มตัวอักษรS(ช่องว่าง), T(แท็บ) และN(บรรทัดใหม่) เป็นการเน้นเท่านั้น
[..._some_action]เพิ่มเป็นคำอธิบายเท่านั้น

ลองออนไลน์ (ด้วยช่องว่างดิบแท็บและบรรทัดใหม่เท่านั้น)

คำอธิบาย:

  1. กดค่า unicode ลบค่าคงที่ 84 สำหรับอักขระ "WN W WS S ESE EN N N" ไปยังสแต็ก (โปรดสังเกตว่าสตริงถูกส่งในการย้อนกลับ) นอกจากนี้ฉันใช้สำเนาผลักดันก่อนหน้านี้สองสามชุดเพื่อบันทึกไบต์หากเป็นไปได้
  2. จากนั้นเริ่มการวนซ้ำไม่สิ้นสุดซึ่งทำสิ่งต่อไปนี้:
    1. เพิ่มค่าคงที่ 84 ให้กับค่า Unicode ปัจจุบัน
    2. พิมพ์เป็นตัวอักษรไปยัง STDOUT

คง84ถูกสร้างขึ้นโดยโปรแกรม Java ซึ่งผมเขียนสำหรับความท้าทายอีกผมตอบในช่องว่าง


3

MathGolf , 20 17 ไบต์

ÿnesw▒∙╫m+mÉîÄ╪^─

-3 ไบต์ขอบคุณที่@maxb

ลองออนไลน์

คำอธิบาย:

ÿnesw      # Push 4-char string "nesw"
           #  STACK: "nesw"
          # Split to a list of characters
           #  STACK: ["n","e","s","w"]
          # Triplicate it
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["n","e","s","w"]
          # Rotate the top one once towards the left
           #  STACK: ["n","e","s","w"],["n","e","s","w"],["e","s","w","n"]
 m+        # Append the top two together
           #  STACK: ["n","e","s","w"],["en","se","ws","nw"]
   m       # Map the strings in the top list to:
    ÉîÄ╪   #  Rotate the string the 1-based index amount of times towards the right
           #   STACK: ["n","e","s","w"],["ne","se","sw","nw"]
^          # Zip; creating pairs with the top two lists
           #  STACK: [["n","ne"],["e","se"],["s","sw"],["w","nw"]]
          # Flatten this list
           #  STACK: ["n","ne","e","se","s","sw","w","nw"]
           # (after which the entire stack is output implicitly as result)

1
17 ไบต์ นี่เป็นความท้าทายที่สนุก ฉันเคยลองมาก่อน แต่จบลงด้วยการที่คุณทำ ฉันคิดว่าสิ่งที่คุณสามารถทำได้มากที่สุดคือ 1 ไบต์ แต่ฉันไม่สามารถหาวิธีที่สั้นกว่านี้ได้
maxb

@ maxb Ah เป็นวิธีที่ดี ฉันต้องยอมรับว่ารหัสของขนาดบล็อก X ( ÉและÄในกรณีนี้) ยังทำให้ฉันสับสนเล็กน้อยในบางครั้ง .. บางครั้งฉันไม่แน่ใจว่าเมื่อฉันทำหรือไม่ต้องใช้บล็อคโค้ดเหล่านั้น m+ตัวอย่างเช่นคุณไม่ได้ใช้ แต่คุณÄเป็นบล็อคโค้ดขนาด 1 ฉันพยายามmÅî╪แค่ดูว่าเกิดอะไรขึ้นซึ่งเป็นสาเหตุที่ฉันเข้าใจว่าทำไมจึงมีบล็อคโค้ดขนาด 1 Äเริ่มต้นด้วย :)) ขอบคุณสำหรับ -3 ไบต์แม้ว่า ยังมีอีกมากให้เรียนรู้ที่ฉันเห็น
Kevin Cruijssen

1
คำอธิบายที่ดี! ฉันพยายามทำวิธีแก้ปัญหาโดยไม่แปลงเป็นรายการตัวอักษร แต่คำสั่ง zip ค่อนข้างจะไม่เกะกะ สำหรับบล็อกรหัสที่คิดว่าพวกเขาเป็นแทน, {}นำมาใช้แทน mÅî╪สร้างการแมป แต่ไม่มีการ for-loop ภายในการแมป ถ้าคุณเขียนm{î{╪}}มันอาจจะง่ายกว่าที่จะเห็นว่ารหัสนั้นคือ "map to: loop <index> ครั้งและหมุนสตริงแต่ละ loop" เหตุผลที่m+ไม่มีอย่างใดอย่างหนึ่งคือคำสั่งบางอย่างมีนัยบล็อก 1 ไบต์ (แผนที่ตัวกรองลด ฯลฯ ) แต่îไม่ใช่คำสั่งหมายถึงการใช้ร่วมกับบล็อก
maxb

1
@ max โดยแท้จริงฉันรู้ว่าการบล็อกโค้ดนั้นเป็นตัวแปรที่สั้นกว่า{...}แต่ฉันก็ลืมว่าinteger{มันเป็น for-loop :) ตอนนี้îÄ╪มันเข้าท่ามากขึ้น ขอบคุณสำหรับคำอธิบาย!
Kevin Cruijssen

2

CSS , 42 39 ไบต์

(ขอบคุณ arachnid หินสำหรับรุ่นที่แก้ไข)

body:after{content:"N NE E SE S SW W NW"


1
-3 bytes:body:after{content:"N NE E SE S SW W NW"
arachnid ศิลาที่

โอ้ฉันลืมไปแล้วนั่นถูกต้องแล้วเช่นกันอัปเดต :)!
roberrrt-s

2

เมล็ดพันธุ์ , 6014 ไบต์

27 32429737401852232227804295321578416370544555457622262891879921280324727410131817586348135470079420921373938348260737299348550007805068404867624897650263347568409592608258945989033792510474363164709158118555665232935403908551415888090695760298337219819413274977014408722140235669339108001709528995376914900494019798521214727367535169036319615676199584661126257462974800782884967804763256678000063025237472650538076831876942979826335539886276642624472204985016283691316313249488093825552581263195700506490263014623798470563718844847334940964632636436478404543496272112184140337568637349767918641524452384959486975049813859244670160569884744538279036643294867674161431756929550170395739925307134312406291063668809195567313928307910934660574895433141956111513050736041440669472422865481546405020220238818265794921314653725749392385549924210837964649297239381603259476675148489582680939048820717739905271461370132524025785160026801625672272913416389786086946626728842588663673416395169524016926695769334183833366462685756958054189820999370092892855665559717806826530952610964256124463840218293029538229042911551526509745973128558291005365222643503139067010483637086697955919587162384655443959408291567894061028044826636171014388153130769792397282335858985323269310727311039012381122390183102126191168963870116881629339035600546009305431793687183913979054151312200573069395058914262857368132993952655571167118263728070696377852599343989848263167312887211748226689125561718255196655446099711296568221690530717651328503948183228932786503716890383195810396161663632504174142420921735055441162618914957825032056019218584287089599270312541933094119409995775035365862244691419255488688879630142415739738796957474249592086989231999568273454247198389863139439897248192949030226324637037937607004428557202644332945222019553599908855943840883606735602486216245714280716148378430738983808375466562604692991701163078094015860708365913183037140180020776525026891135163345427911749533164462233906885068864798951466382247930357444595606617682531499045805835102155190109668901179666311163071611393282924908189215675892953256826649762594463293867383921972181952997833560371571545190945543033351108064265894854803319008655145213765667074789305055723258530694850418765677462165413557272747961130459219342146615095862014137406489375157766959799291089215740196734079295172946350338663239451562589633216908805028629767462044463310475859283605554743731396818983359527612902567406307270838160926586311672252276690909354125055468912844343806046309796590149977323343332039095076680537362333773750051043281967620781236684580688649899599894791764969639275247700776637892615729757899608628514791667795106390376246890330575517824338764219021396958188958235055290896924249770944905659304681507478975095888248103169710912376599445302527257479613158446721050489233911736089191439017996962182413511012900366501119556105789078275149705515012300827868862038071066912823449506913958912235923323638505757204526506327010926007595704417253684932596231606733027284263178479840785607928320603259662026791082244015829365605451084366715394628351636563955621161378688550003390556445245074739462307110100863024184316465734324401688465928827408449165190271528329602702373730346394803239394173490819727873116531045433457650881080122796159241596543253982402471104065237941729677594379317274541529006952959000152687275974001138315010176843925599438278290218390644740919129323109582279220437886915496736885058271413958305953151184342725824729076581370881383360210631877985352671536000503948280559301633936877162466145026758809907939645467704805892486147550057845773849575278620555906080753862688722846292689494961297512113753414009189522365247542490200336579292488067953461299023326925661887077747288500270026888774635820948696015812357241781814592351848858954139716506111479475207696790949277211077720834891880913260866501916732427370806066035548982017315826213049658915419681842381914237502216614528174237875875738156132703973666564945026254499265910704148825037630761619650949635972980035630316257135212349181639940504547722767898302879234673272154028964478458469466250102554612059368293497511404163963705442187242769706586819405113285219700159125119338601931670779192478917206878107091618448093140705173062420040261126935373689918208815797991761563304607704283868972915636425613833785564679990574095368828308776724486415005128506687942819070129022911666887363253202695416103545769073021185132010920185208632024811337544715055406031297413168802089421761798020616230024290524096396092608042069087607272534874457093977610919233750725135220581682913316085638068663247820037223692942067994551786014033707387642820855601334002540339334606906772532939337779748305357112540312103757754695577077583846897693527091162962000082213332051059005644562753372638247584982354478224403477604356150912451128591138652721098074872513196253790561736352841309810909110001754673250730698454675988798465247376421075019414107337634079281061629221783859449063069175434073835673063716565555614782886016441814199915418848976070834414782427725187820926042778984081922550398210353288229598805397201850487997254871012213762289412828417039945896819359898337616122446201299182152276549340911589671291124887672310931868023491872685227548726494469798568145715500153324646857181224645073236602344526749192704938665584870007079941922775292601106345725659322322536675461008337648982039319953181733660980694781559207671567197161027796266390879206526082137700937056380629087949633487181507979286568656291044492869916694352395542638882544967807857391058161838343109606346401310155771709714142586733985703451391374159045025205718989407293651441039802247981386993858491342422355232055341447145969376687615001834650283116652856369804298047720786536278306210551862061566639283704928517998916884505819581251906693306116531467413995747910736025576089721150597919824878333808115757216261812226145636769545796913912159437533454858286778214791559458862216426856243544801486923659355580455048265633089421966932180992

สร้างโปรแกรม befunge ต่อไปนี้:

"WN W WS S ES E EN N">:#,_@


2

ชุดประกอบ (x86, Linux), 68 ไบต์

$ od -x a
0000000 457f 464c 0001 0000 0000 0000 0000 0500
0000020 0002 0003 001b 0500 001b 0500 0004 0000
0000040 13b2 31b9 0000 cd05 2580 0020 0001 cd40
0000060 4e80 4e20 2045 2045 4553 5320 5320 2057
0000100 2057 574e
0000104
$ ./a
N NE E SE S SW W NW$

ที่มา:

BITS 32
org 0x05000000
db 127,"ELF"
dd 1,0
dd $$
dw 2,3
dd 0x0500001B,0x0500001B
dd 4
mov dl,19
mov ecx,m
int 128
db 37
dw 32,1
inc eax
int 0x80
m db 'N NE E SE S SW W NW'

รหัสส่วนใหญ่มาจากShortest ELF สำหรับ "Hello world \ n"?


1

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

“æṖØq’ḃ⁴ḃ4ị“NESW

ลองออนไลน์!

ด้วยส่วนท้ายเพื่อพิมพ์คั่นด้วยช่องว่าง

ลิงก์ niladic ซึ่งส่งคืนรายการสตริง สั้นลง 2 ไบต์ (และน่าสนใจกว่าเนื้อหา) กว่าสตริงที่บีบอัดใน Jelly


1

C # (Visual C # Interactive Compiler)ขนาด 24 ไบต์

_=>"N NE E SE S SW W NW"

ลองออนไลน์!


7
สิ่งนี้ยังทำงานใน Javascript
CalculatorFeline

พูดได้หลายภาษากับฟู
บางคน

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