แหล่งที่มาของฉันอยู่ในลำดับเป็นของคุณหรือไม่


14

ความท้าทายของคุณคือการเขียนโปรแกรมฟังก์ชั่น ฯลฯ ที่คำนวณว่าสตริงที่ส่งผ่านคือ "ตามลำดับ" นั่นหมายความว่าอักขระของสตริงมีรหัสอักขระที่เรียงตามลำดับจากน้อยไปหามากที่สุด รหัสถ่านที่เล็กที่สุดจะต้องเป็นรหัสแรก โดยที่ฉันหมายถึง unicode codepoints ต่ำสุดถึงสูงสุด ไม่สำคัญว่าคุณใช้หน้ารหัสภาษาใด

คุณต้องส่งคืนหนึ่งค่าหากอินพุตคือ "ตามลำดับ" และอีกค่าหนึ่งหากไม่ใช่ ค่าจะต้องแตกต่างกัน แต่ไม่มีข้อ จำกัด อื่น ๆ เกี่ยวกับค่าผลลัพธ์ ตัวอย่างเช่นคุณอาจพิมพ์ / ผลตอบแทน / เอาต์พุตtrueสำหรับ!1AQaq¡±(ตามลำดับ) และสำหรับfalse aq!QAค่าที่แตกต่างกันสองค่าไม่จำเป็นต้องเป็นความจริงหรือเป็นเท็จหรืออะไรทำนองนั้นเพียงสองค่าที่แตกต่าง สายซ้ำ (เช่น. aa) อยู่ในลำดับ

คุณต้องรองรับ unicode U+007E( ~) (ascii 126) เท่านั้น

อย่างไรก็ตามตัวอักษรของโปรแกรมของคุณจะต้องเป็นไปตามลำดับ ขอให้โชคดีและมีความสุขในการเขียน !


คุณไม่จำเป็นต้องมีค่าความจริง / เท็จ? สอง factys จะทำงานอย่างไร
Rɪᴋᴇʀ

นอกจากนี้รหัสถ่านที่เล็กที่สุดจะเป็นถ่านตัวแรกเสมอหรือไม่ หรือจะกลับรายการได้หรือไม่
Rɪᴋᴇʀ

12
Code-golf โดยสุจริตดูเหมือนว่าสภาพการชนะที่ไม่ดีสำหรับแหล่งที่ถูก จำกัด ในรูปแบบนี้ รหัสโบว์ลิ่งสำหรับตัวละครที่เป็นเอกลักษณ์ส่วนใหญ่น่าสนใจกว่า
fəˈnɛtɪk

1
@Pavel Pop cons ทำงานได้ไม่ดีในการบรรลุภารกิจเฉพาะอย่าง
เดนนิส

2
เป็นสตริงซ้ำตามลำดับหรือไม่ ตัวอย่างเช่นอยู่"aa"ในลำดับ?
tsh

คำตอบ:


14

Brachylog 2 ไบต์

.o

ลองออนไลน์!

คำอธิบาย

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

ในฐานะโปรแกรมเต็มรูปแบบความล้มเหลวในการยืนยันให้เกิดfalse.ขึ้นการเรียกใช้ที่ประสบความสำเร็จใด ๆ ที่ไม่ละเมิดการยืนยันใด ๆtrue.


9

เยลลี่ 2 ไบต์

Ṣ⁼

ลองออนไลน์!

คำอธิบาย

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ ยังมีฟังก์ชั่นที่เหมาะสม ("เปรียบเทียบอินพุตกับอินพุตที่เรียงลำดับ") ดังนั้นจึงเป็นเพียงกรณีของการรันสองโปรแกรมในตัวเองเพื่อหาว่าคำสั่งใด (ฉันไม่ได้มี Unicode codepoints ของส่วนนี้อย่างแน่นอน ของชุดอักขระแปลก ๆ ของเยลลี่ที่ท่องจำไว้)


การส่งของคุณไม่ถูกต้องในการเข้ารหัสเยลลี่จะต้องมีการ⁼Ṣเปลี่ยนแทน ท่านสามารถเข้าดูเพจเจลลี่ของที่นี่
Erik the Outgolfer

@EriktheOutgolfer ที่แก้ไขได้ง่าย ไม่เหมือนกับ⁼Ṣ Ṣ⁼
steenbergh

@steenbergh การส่งนี้ตามที่เป็นอยู่ในขณะนี้ไม่ถูกต้อง แม้ว่าการแก้ไขนั้นง่าย แต่ก็ยังไม่ได้นำมาใช้และผู้อื่นไม่จำเป็นต้องแก้ไขโค้ด
Erik the Outgolfer

1
@EriktheOutgolfer อภิปรายเกี่ยวกับคำตอบนี้ส่วนใหญ่เกี่ยวกับเพจรหัสที่จะใช้: การอ้างอิงที่ท้าทาย Unicode (แต่ไม่ได้บอกให้เราใช้อย่างชัดเจน) และ Jelly มีเพจรหัสของตัวเอง ไม่ว่าผลลัพธ์จะเป็นอย่างไรการแก้ไขคำตอบนี้ก็เล็กน้อย ดังนั้นฉันจะไม่ไปไกลถึงการเรียกคำตอบนี้ว่า 'ไม่ถูกต้อง' - ฉันจะไม่ลดระดับลงในสถานะปัจจุบัน
steenbergh

@steenbergh ฉันไม่ได้ลงคะแนนอย่างใดอย่างหนึ่งฉันแค่แจ้ง ais523 :)
Erik the Outgolfer

9

MATL , 5 ไบต์

GGS\a

เอาต์พุต0ถ้าอินพุตอยู่ในลำดับ1มิฉะนั้น

ลองออนไลน์!

คำอธิบาย

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

BCD!ตัวอย่างเช่นพิจารณาสายป้อน '!BCDมันจะช่วยให้การจัดเรียง อาร์เรย์ของจุดรหัสเป็นลำดับและ[66 67 68 33] [33 66 67 68]การคำนวณโมดูลัสให้[0 1 1 33]ดังนั้นอินพุตไม่เป็นไปตามลำดับ โปรดสังเกตว่าผลลัพธ์บางอย่างสามารถทำได้0แม้ว่าค่าจะไม่เหมือนกัน (ที่นี่เกิดขึ้นที่ตำแหน่งแรก) แต่จะไม่สามารถเกิดขึ้นได้ในรายการทั้งหมดยกเว้นว่าอินพุตอยู่ในลำดับ

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display

8

05AB1E , 3 2 ไบต์

ขอบคุณ Kevin ที่ตัดซอร์สโค้ดของฉันออก 33%!

ลองออนไลน์!

คำอธิบาย:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.

D{Qใช้ได้เช่นกัน ...
Neil A.

1
@ NeilA. อาจทำเช่นเดียวกัน แต่ตัวละครไม่เป็นไปตามลำดับ ความต้องการคือซอร์สโค้ดของคุณผ่านการทดสอบเช่นเดียวกับข้อมูล ควรให้ 1 .
steenbergh

1
Dสามารถถอดออกได้สำหรับ -1 โดยเพียงแค่ใช้การป้อนข้อมูลโดยปริยายสองครั้ง
Kevin Cruijssen


5

2sable , 2 ไบต์

ลองออนไลน์!

คำอธิบาย

{    # sorted input
 Ê   # not equals (implicit input)

เอาท์พุท0ถ้ามันเป็นคำสั่งอื่น1


1
@steenbergh: อาพลาดส่วนหนึ่งของความท้าทาย
Emigna

1
@steenbergh: แก้ไข! โชคดีที่เราสามารถส่งออกค่าใด ๆ ที่แตกต่างกัน :)
Emigna

2

Pyth, 2 ไบต์

<S

FalseหมายถึงการเรียงลำดับTrueหมายถึงไม่เรียงลำดับ

ชุดทดสอบ

นี่เป็นเรื่องไม่สำคัญพอสมควรที่จะเกิดขึ้น ทางออกที่ชัดเจนที่สุดสำหรับปัญหานี้โดยไม่ จำกัด แหล่งที่มาคือSIค่าคงที่ภายใต้การเรียงลำดับ แต่นั่นไม่ได้เรียง จากนั้นฉันก็คิดถึงqSซึ่งใช้ตัวแปรอินพุตสองครั้งโดยปริยายตรวจสอบว่ามันเท่ากับตัวเรียงลำดับ แต่ในขณะที่q < s, q > Sดังนั้นนี้ไม่ได้ทำงานอย่างใดอย่างหนึ่ง แต่<มาก่อนSและวิธีเดียวที่รุ่นเรียงไม่สามารถน้อยกว่าต้นฉบับคือถ้าต้นฉบับเรียงลำดับเนื่องจากรุ่นเรียงเป็นเรียงลำดับน้อยที่สุด lexicographically องค์ประกอบ


1

CGL (ภาษากอล์ฟ CGL) , 4 ไบต์ (ไม่แข่งขัน)

-:Sc

คำอธิบาย:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

ไม่ใช่การแข่งขันเพราะ:, Sและcถูกนำมาใช้หลังจากการสร้างความท้าทายนี้


มีหลักฐานว่าภาษานี้ถูกสร้างขึ้นก่อนการท้าทายนี้หรือไม่?
user41805

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