นาฬิกา (เกมไพ่)


14

Clockเป็นเกมไพ่ที่น่าสนใจเพราะไม่ต้องใช้ทักษะ มันเป็นเกมที่เล่นคนเดียวและการกำหนดค่าการ์ดเดียวกันจะนำไปสู่การชนะหรือแพ้ ในความท้าทายนี้คุณจะต้องคิดออกว่าได้รับชัยชนะการกำหนดค่าบัตรหรือสูญเสีย คุณสามารถเล่นเกมที่นี่

เกมนี้เล่นดังต่อไปนี้:

  1. มีกองไพ่สิบสามกองคว่ำหน้าลง แต่ละกองมีจำนวนตั้งแต่ 0 ถึง 12
  2. เราตั้งค่ากองที่ 0 ให้เป็นกองปัจจุบัน
  3. เราพลิกไพ่อันดับต้น ๆ ของกองหน้าปัจจุบันขึ้น
  4. เราย้ายใบหน้าบัตรที่ด้านล่างของกองที่เกี่ยวข้องของตน(บัตร 4 ไปภายใต้กองที่ 4) การ์ดยังคงหงายหน้าอยู่ กองนี้กลายเป็นกองปัจจุบัน
  5. หากกองปัจจุบันหงายขึ้นโดยสมบูรณ์แล้วเกมจะจบลง มิฉะนั้นกลับไปที่ขั้นตอนที่ 3

เคล็ดลับ: เกมจะจบลงที่กองที่ 0 เสมอ

เกมนี้ชนะถ้าไพ่ทุกใบหงายหน้าและแพ้ถ้ามีไพ่คว่ำหน้าอยู่

Input / Output

อาร์เรย์ 2D ที่มีเสาเข็มแต่ละอัน การ์ดจะแสดงด้วยตัวเลขตั้งแต่ 0 ถึง 12 (ชุดไม่เกี่ยวข้องและไม่ได้รับ) การ์ดอันดับต้นของแต่ละกองเป็นองค์ประกอบแรกของแต่ละอาร์เรย์

คุณสามารถสันนิษฐานได้ว่าอินพุตนั้นมีรูปแบบที่ถูกต้อง: มันจะมีไพ่ 52 ใบจาก 0 ถึง 12 (รวม) และมีตัวเลขแต่ละตัว 4 ครั้ง

คุณต้องคืนค่าความจริงหากเกมสามารถชนะได้และเป็นเท็จถ้าเกมนั้นไม่สามารถทำได้

กรณีทดสอบ

Truthy:

[[11, 11, 7, 7], [8, 6, 5, 0], [2, 10, 9, 1], [12, 3, 0, 6], [8, 7, 4, 8], [3, 10, 5, 12], [11, 7, 1, 10], [3, 1, 6, 0], [2, 3, 0, 6], [5, 10, 5, 4], [12, 9, 11, 2], [9, 4, 12, 4], [1, 9, 8, 2]]
[[0, 9, 4, 8], [1, 4, 11, 3], [10, 12, 4, 0], [5, 9, 11, 5], [7, 0, 11, 2], [6, 5, 6, 0], [5, 7, 6, 7], [1, 10, 3, 4], [10, 11, 12, 3], [9, 9, 3, 6], [12, 12, 2, 1], [1, 8, 8, 2], [7, 2, 10, 8]]
[[11, 11, 9, 5], [3, 0, 1, 7], [6, 2, 9, 4], [6, 9, 11, 2], [10, 9, 6, 1], [12, 8, 10, 0], [2, 3, 12, 3], [3, 12, 5, 11], [4, 1, 8, 12], [7, 0, 2, 5], [4, 1, 10, 4], [7, 10, 6, 5], [8, 8, 0, 7]]
[[2, 3, 4, 11], [6, 12, 5, 9], [11, 0, 5, 9], [1, 8, 0, 12], [11, 9, 5, 8], [12, 7, 1, 0], [10, 3, 1, 11], [3, 12, 7, 2], [2, 7, 1, 5], [6, 3, 4, 10], [10, 10, 9, 8], [6, 2, 4, 4], [6, 8, 0, 7]]
[[1, 2, 12, 9], [5, 6, 4, 11], [0, 0, 7, 10], [9, 7, 12, 0], [12, 1, 8, 6], [10, 1, 4, 8], [9, 2, 6, 11], [10, 12, 1, 8], [6, 7, 0, 3], [2, 2, 5, 5], [8, 11, 9, 3], [4, 7, 3, 10], [5, 11, 4, 3]]
[[8, 12, 5, 3], [3, 10, 0, 6], [4, 11, 2, 12], [6, 1, 1, 12], [7, 6, 5, 0], [0, 8, 8, 7], [4, 8, 1, 2], [2, 3, 11, 6], [11, 10, 5, 2], [10, 1, 9, 4], [12, 5, 9, 7], [7, 3, 10, 9], [9, 0, 11, 4]]
[[3, 4, 8, 7], [2, 2, 8, 9], [12, 7, 0, 4], [4, 7, 10, 11], [5, 10, 3, 11], [10, 9, 8, 7], [5, 2, 11, 8], [6, 0, 3, 10], [9, 1, 4, 12], [12, 3, 12, 6], [2, 5, 1, 1], [6, 11, 5, 1], [6, 9, 0, 0]]
[[11, 9, 11, 1], [1, 3, 2, 8], [3, 3, 6, 5], [8, 11, 7, 4], [9, 4, 5, 1], [6, 4, 12, 6], [12, 10, 8, 7], [3, 9, 10, 0], [2, 8, 11, 9], [2, 4, 1, 0], [12, 5, 6, 0], [10, 7, 10, 2], [5, 0, 12, 7]]
[[9, 9, 6, 5], [7, 5, 11, 9], [8, 12, 3, 7], [1, 2, 4, 10], [11, 3, 3, 10], [2, 0, 12, 11], [4, 7, 12, 9], [3, 6, 11, 1], [1, 10, 12, 0], [5, 6, 8, 0], [4, 10, 2, 5], [8, 8, 1, 6], [0, 7, 2, 4]]
[[4, 0, 7, 11], [1, 5, 2, 10], [2, 9, 10, 0], [4, 12, 1, 9], [10, 12, 7, 0], [9, 4, 1, 8], [6, 6, 9, 12], [5, 3, 6, 2], [11, 3, 6, 4], [7, 3, 5, 5], [11, 8, 1, 11], [10, 7, 2, 8], [8, 12, 0, 3]]

Falsy:

[[8, 1, 6, 1], [7, 9, 0, 12], [11, 12, 12, 12], [11, 5, 9, 3], [2, 10, 9, 7], [11, 2, 0, 8], [0, 10, 4, 6], [8, 0, 4, 2], [6, 5, 3, 8], [4, 10, 3, 1], [5, 11, 9, 6], [7, 5, 1, 4], [2, 7, 3, 10]]
[[1, 4, 4, 6], [3, 11, 1, 2], [8, 5, 10, 12], [7, 10, 7, 5], [12, 8, 3, 7], [4, 0, 12, 12], [1, 1, 9, 6], [8, 7, 5, 10], [11, 0, 11, 0], [5, 10, 3, 11], [3, 2, 9, 8], [9, 6, 0, 2], [2, 6, 9, 4]]
[[10, 1, 10, 7], [12, 3, 11, 4], [0, 5, 10, 7], [5, 11, 1, 3], [6, 6, 9, 4], [9, 0, 8, 6], [9, 12, 7, 10], [1, 6, 3, 9], [0, 5, 0, 2], [4, 8, 1, 11], [7, 12, 11, 3], [8, 2, 2, 2], [8, 4, 12, 5]]
[[3, 8, 0, 6], [11, 5, 3, 9], [11, 6, 1, 0], [3, 7, 3, 10], [6, 10, 1, 8], [11, 12, 1, 12], [8, 11, 7, 7], [1, 8, 2, 0], [9, 4, 0, 10], [10, 2, 12, 12], [7, 4, 4, 2], [9, 4, 5, 5], [6, 2, 9, 5]]
[[0, 1, 9, 5], [0, 1, 11, 9], [12, 12, 7, 6], [3, 12, 9, 4], [2, 10, 3, 1], [6, 2, 3, 2], [8, 11, 8, 0], [7, 4, 8, 11], [11, 8, 10, 6], [7, 5, 3, 6], [0, 10, 9, 10], [1, 4, 7, 12], [5, 5, 2, 4]]
[[9, 8, 0, 6], [1, 1, 7, 8], [3, 2, 3, 7], [9, 10, 12, 6], [6, 12, 12, 10], [11, 4, 0, 5], [10, 11, 10, 7], [5, 3, 8, 8], [1, 2, 11, 4], [0, 5, 6, 0], [5, 9, 2, 4], [4, 2, 3, 11], [9, 1, 12, 7]]
[[4, 3, 5, 7], [1, 9, 1, 3], [7, 9, 12, 5], [9, 0, 5, 2], [7, 2, 11, 9], [1, 6, 6, 4], [11, 0, 6, 4], [3, 0, 8, 10], [2, 10, 5, 3], [10, 11, 8, 12], [8, 1, 12, 0], [7, 12, 11, 2], [10, 6, 8, 4]]
[[9, 5, 11, 11], [7, 7, 8, 5], [1, 2, 1, 4], [11, 11, 12, 9], [0, 12, 0, 3], [10, 6, 5, 4], [4, 5, 6, 8], [10, 9, 7, 3], [12, 6, 1, 3], [0, 4, 10, 8], [2, 0, 1, 12], [3, 9, 2, 6], [2, 7, 8, 10]]
[[4, 1, 5, 7], [7, 12, 6, 2], [0, 11, 10, 5], [10, 0, 0, 6], [10, 1, 6, 8], [12, 7, 2, 5], [3, 3, 8, 12], [3, 6, 9, 1], [10, 9, 8, 4], [3, 9, 2, 4], [11, 1, 4, 7], [11, 5, 2, 12], [0, 8, 11, 9]]
[[3, 11, 0, 1], [6, 1, 7, 12], [9, 8, 0, 2], [9, 6, 11, 8], [10, 5, 2, 5], [12, 10, 9, 5], [4, 9, 3, 6], [7, 2, 10, 7], [12, 6, 2, 8], [10, 8, 4, 7], [11, 3, 4, 5], [12, 11, 1, 0], [1, 3, 0, 4]]

คำตอบ:


9

ES6, 57 ไบต์

a=>(g=n=>a.map((x,i)=>i&&x[3]==n&&++c&&g(i)),g(c=0),c>11)

สิ่งนี้ใช้ได้เพราะเฉพาะการ์ดที่อยู่ด้านล่างของกอง 1-12 เท่านั้นที่เกี่ยวข้องและพวกเขาจำเป็นต้องสร้างกราฟกำกับกลับไปที่กอง 0 ดังนั้นฉันจะนับจำนวนของกองที่มีการ์ดด้านล่างเป็น 0 แล้วจำนวนกองที่มี การ์ดด้านล่างเป็นหนึ่งในกองที่ฉันนับก่อนหน้านี้ ฯลฯ หากฉันไปถึง 12 กองการกำหนดค่าจะเป็นการ์ดที่ชนะ

เค้าร่างหลักฐาน:

เกมจะจบลงเมื่อคุณหันหลัง 0 สุดท้ายเนื่องจากกองนั้นจะมีการ์ดน้อยกว่าการ์ดอื่น ๆ

หากการ์ดด้านล่างของกอง 1-12 สร้างกราฟกำกับให้กอง 0 ดังนั้นเพื่อล้าง 0 กองเราต้องล้างกองทั้งหมดที่มีรายการสุดท้ายเป็น 0 และอื่น ๆ ซ้ำกองที่เราต้องล้าง เพื่อให้เราสามารถล้างกองที่มีรายการสุดท้ายเป็น 0 และอื่น ๆ การกำหนดค่าจึงเป็นหนึ่งในการชนะ

หากการ์ดที่อยู่ด้านล่างของกอง 1-12 ไม่ได้สร้างกราฟกำกับให้กอง 0 จะต้องมีอย่างน้อยหนึ่งรอบ ไม่สามารถล้างกองในรอบนี้ได้เนื่องจากขึ้นอยู่กับกองก่อนหน้าในรอบ (ในกรณีของวงจรที่มีความยาว 2 นี่เป็นสถานการณ์ไก่และไข่) ดังนั้นการกำหนดค่าจึงเป็นสิ่งที่สูญเสียไป


7

CJam, 23 21 ไบต์

q~({(\a@+1$ff-m<(}h*!

เรียกใช้กรณีทดสอบทั้งหมด

หากการมอบหมายความจริงและความเท็จเป็นสิ่งที่ตรงกันข้ามฉันสามารถบันทึก 3 ไบต์:

q~{((\a@+1$ff-m<}h

คำอธิบาย

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

q~    e# Read and evaluate input.
(     e# Pull off the first (current) pile.
{     e# While the current pile is non-empty...
  (\  e#   Pull off the top card and swap with the remaining pile.
  a   e#   Wrap the pile in an array.
  @+  e#   Prepend it to the list of piles
  1$  e#   Copy the drawn card.
  ff- e#   Subtract it from all all remaining cards.
  m<  e#   Rotate the stack to the left by the drawn card
  (   e#   Pull off the top pile as the new current pile.
}h
*     e# The top pile is empty. Joining the other piles with it, flattens them.
!     e# Logical not, turns an empty array into 1 and a non-empty array into 0.


4

Pyth, 13 ไบต์

!su@LGGXeMQZZ

อาศัยหลักฐานของ @ Neil !su&VG@LGGeMQยังใช้งานได้

                 implicit: Q=input
! s u            Sum of (apply lambda G,H on ... until fixed point) equals 0
      @L         Index G into itself.
         G       
         G       
                  Apply that to:
      X                                            set to
        eM Q      Last elts of input, with the 
        Z                                      0th
        Z                                                 0

ลองมันนี่


บรรทัดขอมีขนาดใหญ่เกินไป (7173> 4094)
บ้า

แก้ไขลิงก์
lirtosiast

1

Python ขนาด 55 ไบต์

x=lambda l,i=0:x(l,l[i].pop(0))if l[i]else[]==sum(l,[])

หากรายการย่อยไม่ว่างเปล่าให้ทำรายการต่อไป เมื่อมันว่างเปล่าส่งคืนรายการทั้งหมดที่ว่างเปล่า (โดยจัดกลุ่มไว้ในรายการใหญ่หนึ่งรายการ) หรือไม่


ฉันได้รับ False สำหรับกรณีทดสอบจริงครั้งแรกโดยใช้ Python 3.4.2
lirtosiast

ฉันกำลังรายการสุดท้ายของแต่ละรายการดังนั้นคุณต้องพลิกรายการ: l = [i [:: - 1] สำหรับ i ใน l]
Dantal

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

แก้ไขแล้ว. ตอนนี้มันปรากฏรายการแรก
Dantal

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