คุณไม่ได้เกลียดเมื่อคุณต้องการคัดลอกวางรายการตัวเลข (เวกเตอร์, อาร์เรย์ ... ), จากโปรแกรมหนึ่งไปยังอีกโปรแกรมหนึ่ง แต่รูปแบบที่คุณมีตัวเลขนั้นไม่ตรงกับรูปแบบที่คุณต้องการ ?
ตัวอย่างเช่นใน MATLAB คุณอาจมีช่องว่างคั่นรายการดังนี้:
[1 2 3 4 5] (you can also have it comma separated, but that's not the point)
ใน Python คุณจะต้องใส่เครื่องหมายจุลภาคเพื่อให้รายการนั้นเป็นอินพุตที่ถูกต้องดังนั้นคุณต้องแปลงเป็น
[1, 2, 3, 4, 5]
เพื่อให้มันทำงาน ใน C ++ คุณอาจต้องการสิ่งต่อไปนี้:
{16,2,77,29}
และอื่น ๆ
เพื่อทำให้ชีวิตของทุกคนง่ายขึ้นให้สร้าง list converter ที่รับรายการในทุกรูปแบบ * และส่งออกรายการในรูปแบบอื่นที่ระบุ
วงเล็บที่ถูกต้องคือ:
[list]
{list}
(list)
<list>
list (no surrounding brackets)
ตัวคั่นที่ถูกต้องคือ:
a,b,c
a;b;c
a b c
a, b, c <-- Several spaces. Must only be supported as input.
a; b; c <-- Several spaces. Must only be supported as input.
a b c <-- Several spaces. Must only be supported as input.
หมายเหตุอินพุตสามารถมีช่องว่างจำนวนเท่าใดก็ได้ระหว่างตัวเลข แต่ผลลัพธ์สามารถเลือกที่จะมีช่องว่างเป็นศูนย์ได้ (ถ้าใช้,
หรือ;
ใช้เป็นตัวคั่น) หรือเว้นวรรคเดียว (ถ้าเป็นตัวคั่นช่องว่าง)
นอกเหนือจากรายการอินพุตแล้วจะมีสตริง (หรืออักขระสองตัว) ที่กำหนดรูปแบบเอาต์พุต สตริงรูปแบบแรกจะเป็นประเภทเปิดวงเล็บ (เท่านั้น) [
, (
, <
, {
หรือ(คนสุดท้ายที่เป็นพื้นที่เดียวที่ใช้เมื่อไม่มีวงเล็บรอบ) ประเภทวงเล็บจะตามมาด้วยประเภทคั่น,
,
, ;
หรือ(คนสุดท้ายที่เป็นพื้นที่เดียว) ต้องใช้อักขระรูปแบบอินพุตสองตัวเป็นอาร์กิวเมนต์เดี่ยว (สตริงหรืออักขระต่อเนื่องสองตัว) ตามลำดับที่อธิบายไว้ข้างต้น
ตัวอย่างของรูปแบบสตริง:
[, <-- Output format: [a,b,c]
{; <-- Output format: {a;b;c}
<-- Two spaces, output list has format: a b c
กฎ:
- เอาต์พุตไม่สามารถมีช่องว่างนำหน้าได้
- เอาต์พุตสามารถมีช่องว่างต่อท้ายและขึ้นบรรทัดใหม่
- เอาท์พุทควรเพียง แต่ จะเป็นรายการของตัวเลขไม่ได้
ans =
หรือคล้ายกัน
- เอาท์พุทควรเพียง แต่ จะเป็นรายการของตัวเลขไม่ได้
- อินพุตจะเป็นรายการของจำนวนเต็มหรือทศนิยม (ทั้งบวกและลบ (และศูนย์)) และสตริงของอักขระสองตัว
- หากอินพุตประกอบด้วยจำนวนเต็มเท่านั้นรายการผลลัพธ์ควรมีจำนวนเต็มเท่านั้น หากรายการอินพุตประกอบด้วยจำนวนเต็มและตัวเลขทศนิยมจำนวนเอาต์พุตทั้งหมดสามารถเป็นตัวเลขทศนิยม (เป็นทางเลือกที่จะเก็บจำนวนเต็มเป็นจำนวนเต็ม)
- จำนวนสูงสุดของตัวเลขหลังจุดทศนิยมที่ต้องรองรับคือ 3
- อินพุตจะเป็นสองอาร์กิวเมนต์ นั่นคือตัวเลขอยู่ในอาร์กิวเมนต์เดียวและสตริงรูปแบบเป็นอาร์กิวเมนต์เดียว
- รหัสสามารถเป็นโปรแกรมหรือฟังก์ชั่น
- อินพุตสามารถเป็นอาร์กิวเมนต์ของฟังก์ชันหรือ STDIN
ตัวอย่างบางส่วน:
1 2 3 4
[,
[1,2,3,4]
<1; 2; 3>
; <-- Space + semicolon
1;2;3
not valid: 1.000;2.000;3.000 (Input is only integers => Output must be integers)
{-1.3, 3.4, 4, 5.55555555}
[,
[-1.300,3.400,4.000,5.556] (5.555 is also valid. Rounding is optional)
also valid: [-1.3,3.4,4,5.55555555]
รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ และเช่นเคยผู้ชนะจะถูกเลือกหนึ่งสัปดาห์จากวันที่มีการโพสต์ความท้าทาย คำตอบที่โพสต์ในภายหลังยังคงสามารถชนะหากพวกเขาสั้นกว่าผู้ชนะปัจจุบัน
ลีดเดอร์บอร์ด
ส่วนย่อยของสแต็กที่ด้านล่างของโพสต์นี้สร้างแคตตาล็อกจากคำตอบ a) เป็นรายการของวิธีแก้ปัญหาที่สั้นที่สุดต่อภาษาและ b) เป็นลีดเดอร์บอร์ดโดยรวม
เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:
## Language Name, N bytes
ที่N
มีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในบรรทัดแรกโดยการตีพวกเขาผ่าน ตัวอย่างเช่น
## Ruby, <s>104</s> <s>101</s> 96 bytes
หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของไฟล์สองไฟล์หรือคุณต้องการแสดงรายการบทลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:
## Perl, 43 + 2 (-p flag) = 45 bytes
คุณยังสามารถทำให้ชื่อภาษาเป็นลิงก์ซึ่งจะปรากฏในตัวอย่างข้อมูล:
## [><>](http://esolangs.org/wiki/Fish), 121 bytes
_
เพื่อแสดงถึงองค์ประกอบเชิงลบ :(