ลดรายการให้เป็นหมายเลขสุดท้าย


9

ปัจจัยการผลิต

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

เอาท์พุท

ตัวเลขเดียวหรืออีกครั้งเป็นสตริงตัวเลข

ปัญหา

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

ตัวอย่าง

[123,343,121,76,465,786] -- The last digit in 786 is dropped, so it becomes 78
[123,343,121,76,465,78]  -- New largest number is 465, so the 5 is dropped, making it 46
[123,343,121,76,46,78]   -- Repeat until left with one number
[123,34,121,76,46,78]
[12,34,121,76,46,78]
[12,34,12,76,46,78]
[12,34,12,76,46,7]
[12,34,12,7,46,7]
[12,34,12,7,4,7]
[12,3,12,7,4,7]
[1,3,1,7,4,7]            -- If there are multiple max numbers, you **must** remove the last digit from all of them
[1,3,1,4]
[1,3,1]
[1,1]                    -- You have your answer when there is one number, or multiple numbers that are equal
1                        -- Result

ช่องโหว่

ช่องโหว่มาตรฐานใช้

ข้อ จำกัด อื่น ๆ

โปรแกรมของคุณจะต้องใช้งานได้กับรายการหมายเลขสุ่มใด ๆ (ด้วยเหตุผล)

กรณีทดสอบ

[24,72,4]
[24,7,4]
[2,7,4]
[2,4]
[2]
2

[14, 7]
[1, 7]
[1]
1

[1278,232,98273,2334]
[1278,232,9827,2334]
[1278,232,982,2334]
[1278,232,982,233]
[127,232,982,233]
[127,232,98,233]
[127,232,98,23]
[127,23,98,23]
[12,23,98,23]
[12,23,9,23]
[12,2,9,2]
[1,2,9,2]
[1,2,2]
[1]
1

เกณฑ์การให้คะแนน

นี่คือ ดังนั้นคำตอบที่สั้นที่สุดในทุกภาษาจะชนะ!


1
โปรดแจ้งให้เราทราบหากฉันไม่ได้รับอะไรเลย คำถามแรก
Henry

14
Dunno ถ้ามันสายเกินไปที่จะเปลี่ยนแปลง แต่คำถามอาจจะดีกว่าถ้าเราไม่ได้มีการส่งออกในแต่ละขั้นตอน ฉันคิดว่าคำตอบจะค่อนข้างตรงไปตรงมาเป็นอย่างอื่น
DLosc

8
เนื่องจากไม่มีใครพูดถึงเรื่องนี้เป็นชนิดของสิ่งที่จะถูกจับบ่อยในกล่องเครื่องมือ
James

1
คุณสามารถเพิ่มชุดทดสอบที่คำตอบไม่ใช่ตัวเลขแรกของรายการแรกในรายการได้หรือไม่
JAD

5
วิธีที่ผมอ่านคำถามนี้คำตอบสำหรับ[12, 123, 124]เป็น12ซึ่งจะทำให้ทุกคนเดียวที่ไม่ถูกต้องคำตอบโพสต์
Ørjan Johansen

คำตอบ:






3

Japt , 8 6 5 ไบต์

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

n g g

รับอินพุตเป็นอาร์เรย์ของสตริงตัวเลข ลองออนไลน์!

คำอธิบาย

        // implicit input: array of strings
n       // sort the array
  g     // get the first element
    g   // get the first character
        // implicit output

5 ไบต์ : เรียงลำดับอาร์เรย์รับองค์ประกอบแรกรับอักขระตัวแรก
Shaggy

@ Shaggy โอ้ดึกฉันมีความซับซ้อนมากกว่านี้ ขอบคุณ!
Justin Mariner

ไม่มีปัญหา :) n v gจะใช้งานได้ 5 ไบต์ ยินดีต้อนรับสู่ Japt โดยวิธีการ
Shaggy

2

05AB1E , 3 ไบต์

€нW

ลองออนไลน์!


[12,23,12]ล้มเหลว
Olivier Grégoire

@ OlivierGrégoire: เป็นอย่างไร การลบตัวเลขในคำสั่งซื้อ3,2,2,2,1ส่งผลให้1ตามที่คาดไว้
Emigna

ฉันไม่ดีฉันอ่านผิด ดูความคิดเห็นก่อนหน้า
Olivier Grégoire

2

PHP , 45 ไบต์

<?foreach($_GET as$v)$r[]=$v[0];echo min($r);

ลองออนไลน์!


[12,23,12]ล้มเหลว
Olivier Grégoire

@ OlivierGrégoire [12,23,12] -> [12,2,12] -> [1,2,12] -> [1,2,1] -> [1,1] -> [1] -> 1 อยู่ในความคิดของฉันถูกต้อง
JörgHülsermann

ฉันไม่ดีฉันอ่านผิด ดูความคิดเห็นก่อนหน้า
Olivier Grégoire

2

V , 11 , 5 ไบต์

ÚxV}p

ลองออนไลน์!

ฉันทำให้waaayนี้ซับซ้อนกว่าที่เป็นจริง คำตอบนี้จะเรียงลำดับทุกบรรทัดด้วยค่า ASCII จากนั้นส่งกลับอักขระแรก เนื่องจากนี่เป็นคำตอบที่ดีหรือน่าเบื่อนี่เป็นคำตอบที่น่าสนใจยิ่งกว่าที่ใช้อัลกอริทึมที่อธิบายไว้ในตอนแรก:

V , 11 ไบต์

òún
/äîä
Lx

ลองออนไลน์!


ฉันก็เช่นกันเมื่อฉันโพสต์คำถาม คำตอบเดิมของคุณคือสิ่งที่ฉันคาดหวังมากที่สุด คนเกียจคร้าน
Henry

2

เจลลี่ ,  3  2 ไบต์

ṂḢ

โปรแกรมเต็มรูปแบบซึ่งรับรายการของตัวละคร (สตริง) และพิมพ์ผลลัพธ์

ลองออนไลน์!

อย่างไร?

เราเพียงแค่ส่งคืนตัวเลขนำที่เล็กที่สุด ...

ṂḢ - Main link: list of lists of characters
Ṃ  - minimum (lexicographical ordering ensures this will start with the minimal digit)
 Ḣ - head (get that first digit character)

ไม่มีปัญหามันเกิดขึ้น
Jonathan Allan

2

JavaScript (ES6), 17 ไบต์

รับอินพุตเป็นอาร์เรย์ของสตริง

a=>a.sort()[0][0]

ลองมัน

ป้อนรายการตัวเลขคั่นด้วยเครื่องหมายจุลภาค

o.innerText=(f=
a=>a.sort()[0][0]
)((i.value="1278,232,98273,2334").split`,`);oninput=_=>o.innerText=f(i.value.split`,`)
<input id=i><pre id=o>



1

Braingolf 17 ไบต์

VVR{Mvd<M&$_R}vvx

ลองออนไลน์!

คำอธิบาย

VVR{Mvd<M&$_R}vvx  Implicit input from commandline args
VVR                Create stack2 and stack3, return to stack1
   {.........}     Foreach item in stack..
    M              ..Move item to next stack
     v             ..Switch to next stack
      d            ..Split item into digits
       <M          ..Move first item to next stack
         &$_       ..Clear stack
            R      ..Return to stack1
              vv   Switch to stack3
                x  Reduce to lowest value
                   Implicit output of last item on stack

กล่าวอีกนัยหนึ่งมันสร้างสแต็กที่ประกอบด้วยเฉพาะตัวเลขแรกของแต่ละรายการจากนั้นส่งออกต่ำสุด

ความท้าทายนี้ทำให้ฉันมีความคิดที่เป็นประโยชน์สำหรับบิวด์อินเพื่อเพิ่มไปยัง Braingolf และตอนนี้ต้องขอบคุณการเพิ่มวง "foreach" พิเศษ "Braingolf สามารถทำได้ใน 5 ไบต์:

Braingolf 5 ไบต์ [ไม่แข่งขัน]

(d<)x

คำอธิบาย

(d<)x  Implicit input from commandline args
(..)   Special foreach loop, iterates over the stack, moving each item to a special
       Sandboxed stack environment, and prepends the last item of the sandboxed
       stack to the real stack at the end of each iteration
 d<    Split into digits, move first digit to end of stack
    x  Reduce to lowest value
       Implicit output of last item on stack

ลองออนไลน์!

ฉันตามปกติกับการเพิ่ม builtins เพียงที่จะสมบูรณ์ความท้าทายหนึ่ง แต่ฉันสามารถดูมากมายเหลือเฟือของการใช้งานสำหรับใหม่(...)ห่วง foreach ดังนั้นฉันไม่ได้จริงๆคิดว่ามันจะเพิ่มคุณลักษณะเพียงสำหรับความท้าทายนี้


[12,23,12]ล้มเหลว การส่งออกที่คาดว่าจะเป็นคุณกลับ2 1
Olivier Grégoire

@ OlivierGrégoireผลลัพธ์ที่คาดหวังจากนั้นคือ1:[12,23,12] > [12,2,12] > [1,2,1] > [1,1]
Skidsdev

ฉันไม่ดีฉันอ่านผิด ดูความคิดเห็นก่อนหน้า
Olivier Grégoire


0

จุดเล็ก ๆ 5 ไบต์

รับรายการหมายเลขอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง

@@SSg

ลองออนไลน์!

อีกวิธีหนึ่งคือ:

MN@Zg

ลองออนไลน์!

คำอธิบาย

ในทั้งสองโปรแกรมgคือรายการของบรรทัดคำสั่ง

@@SSg

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

    g  [24 72 491]
  SS   [24 491 72]
 @     24
@      2

อีกวิธีหนึ่งคือ:

MN@Zg

Zมีซิป สามารถใช้เวอร์ชันที่แยกกันเพื่อแปลงรายการได้ องค์ประกอบแรกของรายการที่ถูกย้ายคือรายการของตัวเลขแรกของตัวเลขทั้งหมด @รับรายการตัวเลขนั้น MNใช้เวลาน้อยที่สุด

    g  [24 72 491]
   Z   [[2 7 4] [4 2 9]]
  @    [2 7 4]
MN     2

0

PHP, 27 ไบต์

<?=substr(max($_GET),0,-1);

(ว้าวเข้าใจผิดโดยสิ้นเชิงคำถามนี้ใช้ไม่ได้จะแก้ไขในภายหลัง)


0

Pyth , 9 7 ไบต์

hSmsh`d

ลองออนไลน์!

คำอธิบาย

สิ่งนี้จะคืนค่าตัวเลขนำที่เล็กที่สุด

       Q    # Implicit input
  msh`d     # For each number in Q, convert to string, take the first character, convert to integer
hS          # Return the minimum


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