ตัวแทนของฉันอยู่ในรูปแบบกองซ้อนแลกเปลี่ยนหรือไม่


16

สถานที่ตั้ง:

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

ในขณะที่การย่อยสลายแต่ละ

  • เหรียญทองหลักมีค่าสามหลัก
  • เงินมีค่าเป็นตัวเลขสองหลัก
  • บรอนซ์เป็นหนึ่งหลัก
  • นอกจากนี้ตั้งแต่ SE ไม่แสดงประเภทเหรียญถ้าคุณไม่ได้ใด ๆ นับจาก 0 เหรียญสำหรับประเภทจะไม่ได้[0]ผลผลิต

ตัวอย่าง:

  • [1 Gold, 2 Silvers, 3 Bronzes][1,1,1,2,2,3]จะสลายตัวลงไป 321112 และ 213121 เป็นสองตัวอย่างของหมายเลข SE-form สำหรับเหรียญเหล่านี้
  • [20 Golds, 0 Silvers, 20 Bronzes][2,2,2,0,0,0,2,0]จะสลายตัวลงไป 20002022 เป็นหมายเลข SE-form
  • [11 Golds, 0 Silvers, 0 Bronzes][1,1,1,1,1,1]จะสลายตัวลงไป 111111 เป็นหมายเลข SE-form เดียวสำหรับสิ่งนี้

จะไม่มีการนำหน้า 0 เมื่อพิจารณาหมายเลข SE เช่นในตัวอย่างที่ 2 ข้างต้น00002222 -> 2222จะไม่ได้รับการพิจารณาเป็นจำนวน [20,0,20]SE-แบบฟอร์ม

Input / Output:

อินพุตคือ list / tuple / array / อะไรก็ตาม[reputation, gold_medals, silver_medals, bronze_medals]ที่เป็นจำนวนเต็มไม่เป็นลบ นี่คือลำดับที่สันนิษฐาน แต่สามารถเปลี่ยนแปลงได้ เพียงจดบันทึกคำตอบของคุณหากคุณ

เอาต์พุตคือสองค่าที่สอดคล้องกันสำหรับจริงและเท็จ

กฎ:

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

กรณีทดสอบ:

#[Rep, Gold, Silver, Bronze] -> Output
[4, 0, 0, 4]       -> True
[1447, 0, 4, 17]   -> True
[74414, 4, 0, 17]  -> True
[4444, 4, 0, 4]    -> True
[4455, 0, 54, 0]   -> True
[5355, 5, 0, 3]    -> True
[53535, 5, 3, 0]   -> True
[4444, 0, 0, 4444] -> True
[444, 4, 0, 0]     -> True
[1234, 0, 0, 1234] -> True
[1234, 0, 0, 4321] -> True

[4444, 1, 0, 1]      -> False
[5555, 5, 0, 55]     -> False
[1234, 1, 23, 4]     -> False
[1, 0, 0, 0]         -> False
[1001001, 0, 10, 10] -> False

ดังนั้นชื่อเสียงทำอะไรในบริบทของความท้าทาย?
OrangeCherries

3
@ OrangeCherries โดยอัตโนมัติไม่มีอะไร มันเป็นแรงบันดาลใจให้กับความท้าทายเพราะฉันมีตัวแทน 1447 คนและ 4 สี 17 ครั้งในการเขียน
Veskah

1
อินพุตมีความยืดหยุ่นนอกเหนือจากคำสั่งซื้อหรือไม่ ยกตัวอย่างเช่นฉันสามารถนำรายการเข้า[bronze, silver, gold]และส่วนที่สองแยกกันได้reputationหรือไม่
Kevin Cruijssen

1
@KevinCruijssen ใช่นั่นเป็นเรื่องปกติ สิ่งเดียวที่ฉันพูดคือไม่อนุญาตให้ป้อนข้อมูลเป็นรายการของตัวอักษร / ตัวเลขที่ประกอบกันเป็นตัวเลข
Veskah

มีค่าความจริง / เท็จใด ๆ ที่ได้รับอนุญาตสำหรับการส่งออกหรือจะต้องเป็นสองคนที่สอดคล้องกัน?
Nick Kennedy

คำตอบ:


11

05AB1E , 16 14 13 11 10 ไบต์

∞×0KJ‚€{íË

ใช้อินพุตเหรียญตามลำดับ[bronze, silver, gold]เป็นอินพุตแรกและreputationเป็นอินพุตที่สอง

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

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

           # Push an infinite positive list: [1,2,3,...]
 ×          # Repeat the values in the (implicit) input-list that many times as string
            # (since the input-list contains just 3 values, the rest of the infinite
            #  list is ignored)
  0K        # Remove all 0s (so all "0", "00" and "000")
    J       # Join the strings in the list together
           # Pair this string with the (implicit) second input
      €{í   # Sort the digits in both strings in descending order
         Ë  # And check if both are now equal
            # (after which the result is output implicitly as result)

1
3L-> สำหรับ -1
Grimmy

1
@Grimy บางครั้งมันมีประโยชน์ที่รายการจะถูกตัดให้เล็กที่สุด :) ขอบคุณ!
Kevin Cruijssen

นี่คือ 19 ไบต์ใน utf-8 ไม่ใช่ 10 ไบต์
โกหกที่

@LieRyan คุณถูกต้องมันเป็น 19 ไบต์ใน UTF-8 05AB1E ใช้ (เช่น Jelly และ Charcoal) codepage ที่กำหนดเองโดยที่อักขระ 256 ตัวที่รู้จะถูกเข้ารหัสใน 1 ไบต์ ไบต์ในรุ่น 10 ไบต์ในเลขฐานสิบหกคือ\x19\xd7\x30\x4b\x4a\x82\x80\x7b\xec\xcb: คุณควรใช้ไบต์ฐานสิบหกเหล่านี้ด้วยการ--osabieตั้งค่าสถานะ แต่ฉันไม่แน่ใจว่าจะทำเช่นนั้นในรุ่น 05AB1E Elixir ได้อย่างไรโดยสมบูรณ์ (แต่ฉันจะถามบางอย่าง คนอื่นเพื่อยืนยันและตอบกลับคุณพร้อมคำตอบ)
Kevin Cruijssen

@LieRyan ในรุ่น PAB 05AB1E (ดั้งเดิม) มันสามารถทำได้เช่นนี้ (เป็นโปรแกรมที่แตกต่างกันสำหรับความท้าทายอื่นของหลักสูตร) ​​แต่มันควรจะให้ความคิดเกี่ยวกับวิธีการที่ไบต์ฐานสิบหกทำงาน
Kevin Cruijssen

7

JavaScript (ES6),  92  74 ไบต์

(['gold','silver','bronze'])('rep')จะเข้าเป็น ส่งคืนค่าบูลีน

b=>r=>[...b.map((n,i)=>n.repeat(+n&&3-i)).join``].sort()+''==[...r].sort()

ลองออนไลน์!


JavaScript (ES6), 74 ไบต์

(gold, silver, bronze, 'rep')จะเข้าเป็น ส่งคืนค่าบูลีน

(g,s,b,r)=>(F=s=>[...s].sort()+0)(r)==F([g,g,g,s,s,b].filter(x=>x).join``)

ลองออนไลน์!


7

MATL , 28 ไบต์ 20 ไบต์ 16 ไบต์ 13 ไบต์

ส่งคืน 0 สำหรับเท็จและ 1 สำหรับจริง สิ่งนี้สามารถลงสนามได้อย่างแน่นอน

[1,3,2,1]Y"t2:7)XzVXzY@Ums0>

ลดลงได้ถึง 16 ไบต์หากคะแนนชื่อเสียงสามารถแยกเป็นสัดส่วนได้และลำดับคือ [บรอนซ์, เงิน, ทองคำ] และชื่อเสียง
ลดลงถึง 13 ไบต์ขอบคุณ Luis Mendo

3:Y"XzVXzY@Um

ลองออนไลน์!




5

Japtap , 14 13 12 ไบต์

íp fn ¬á øUg

ใช้อินพุตเป็น [rep, bronze, silver, gold]

ลองใช้หรือตรวจสอบกรณีทดสอบทั้งหมด

Sample input: U = [1447, 17, 4, 0]
íp            Repeats each value of U by it's index amount e.g. ["","17","44","000"]
  fn          Remove all falsy values when converted to a number e.g. ["17","44"]
    ¬         Concatenate e.g. "1744"
     á        All permutations e.g. ["1744","1744","1474","1447","1474","1447","7144","7144","7414","7441","7414","7441","4174","4147","4714","4741","4417","4471","4174","4147","4714","4741","4417","4471"]
      øUg     Does it contain the first item of the input? 

ฉันได้แทงสองสามอันนี้จากมุมที่แตกต่างกันสองสามอย่าง แต่ไม่สามารถทำได้ดีกว่า 13
Shaggy

@Shaggy กลายÅเป็นสิ่งที่ไม่จำเป็นเพราะfnจะกำจัดค่าแรก การลบÅทำให้มีขนาด 12 ไบต์
ศูนย์รวมแห่งความไม่รู้

นี่คือ 16 ไบต์ใน utf-8 ไม่ใช่ 12 ไบต์
โกหกที่

@LieRyan ภาษากอล์ฟบางภาษาใช้การเข้ารหัสของตัวเอง Japt ใช้ ISO-8859-1`
ศูนย์รวมแห่งความไม่รู้

@EmbodimentofIgnorance, Ah, goddamnit ทำไมฉันไม่เห็นสิ่งนั้น! ฉันรู้สึกฝึกซ้อมอย่างหนักตั้งแต่ฉันใช้เวลาเดือนนั้นเพื่อรับรางวัล Japt
Shaggy

4

เรติน่า 0.8.2 , 45 ไบต์

,0
,
,(\d*),(\d*),
¶$1$1$1$2$2
%O`.
^(.+)¶\1$

ลองออนไลน์! ลิงค์มีชุดทดสอบ คำอธิบาย:

,0
,

ลบคะแนนศูนย์

,(\d*),(\d*),
¶$1$1$1$2$2

ขยายคะแนนทองคำและเงินและแปลงเครื่องหมายแบ่งเป็นบรรทัดใหม่

%O`.

เรียงลำดับชื่อเสียงและคะแนนขยายแยกต่างหาก

^(.+)¶\1$

เปรียบเทียบตัวเลขที่เรียงลำดับแล้ว



4

แร็กเก็ต149 107 98 ไบต์

(λ(r b s g[h(λ x(sort(string->list(apply ~a(remq*'(0)x)))char<?))])(equal?(h r)(h b s s g g g)))

ลองออนไลน์!

ครั้งแรกที่เล่นกอล์ฟใน Racket ดังนั้นยังคงมองหาการปรับปรุง ...

คำอธิบาย (ของรุ่นที่ยาวกว่าเดิม แต่มีแนวคิดเหมือนกัน):

(λ(r b                              ; take rep and badges as arguments
     [g(λ(x)                        ; helper function g which takes a string
         (sort                      ; and returns the sorted
           (string->list x)         ; list of characters
           char<?))])               ; (sort by ascii code)
  (equal?                           ; compare...
    (g(~a r))                       ; g called on the rep converted to string
    (g                              ; and g called on...
      (string-join                  ; the concatenation of
        (map ~a                     ; the stringified elements of
             (append*               ; the flattened list given by
               (filter              ; the elements of the following list where
                 (λ(x)(>(car x)0))  ; the badge count is nonzero:
                 (map make-list     ; repeat the badge counts
                      '(1 2 3)b)))) ; 1, 2, and 3 times respectively
        ""))))

2

ถ่าน 24 ไบต์

1F⁴F↨NχFι⊞υκFχ¿⁻№υι№θIι⎚

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด รับอินพุตในตัวแทนคำสั่งซื้อ, บรอนซ์, เงิน, ทองคำและผลลัพธ์1หากตัวแทนถูกต้อง คำอธิบาย:

1

สมมติว่าตัวแทนนั้นถูกต้อง

F⁴F↨NχFι⊞υκ

วนซ้ำค่าอินพุตทั้งสี่ ผลักดันหลักของแต่ละค่าในแต่ละiครั้งที่iเป็นดัชนี 0 การจัดทำดัชนีของค่า การแปลงฐานตัวเลขจะใช้ที่นี่เนื่องจากจะแปลง0เป็นอาร์เรย์ว่าง

Fχ¿⁻№υι№θIι⎚

ตรวจสอบการนับของแต่ละหลักในอาร์เรย์ที่ตรงกับที่อยู่ในอินพุตแรก หากแตกต่างกันให้ล้างผ้าใบ


นี่คือ 60 ไบต์ใน utf-8 ไม่ใช่ 24 ไบต์
Lie Ryan

@LieRyan ฉันไม่ได้บอกว่าเป็น UTF-8 ไบต์
Neil

2

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

DẋṠƊ€ẋ"3RU¤FṢ⁼⁴DṢ¤

ลองออนไลน์!

มันค่อนข้างแย่


นี่คือ 37 ไบต์ใน utf-8 ไม่ใช่ 18 ไบต์
Lie Ryan

@LieRyan Jelly (และภาษากอล์ฟอื่น ๆ อีกมากมาย) ใช้หน้ารหัสของตัวเองเพื่อให้รหัส 256 ไบต์ขนาด 256 ตัวใดตัวหนึ่งตรงกับอักขระที่ใช้โดยภาษานั้น ๆ
HyperNeutrino


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