พลิกสวิตช์


17

หลังจากที่คุณตื่นในห้องมืดคุณจะเห็นกริดของไฟเป็นรูปสี่เหลี่ยมผืนผ้าพร้อมสวิตช์ที่เกี่ยวข้อง คุณตัดสินใจที่จะใช้ระบบพิกัดที่มีแสงด้านล่างซ้ายแทน (1,1) และพิกัดเพิ่มขึ้นเมื่อคุณขึ้นไป (ทิศทาง y) และไปทางขวา (ทิศทาง x) กริดเหมือนกันในการพลิกสวิตช์ที่ (a, b) สลับ (เปลี่ยนจากปิดเป็นเปิดหรือปิดเปิด) แสงที่ (a, b) เช่นเดียวกับไฟในคอลัมน์เดียวกันหรือแถวเดียวกันกับ ( A, B)

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

เอาต์พุตจะเป็นกริดเดียวกันโดยใช้ "ฟลิป" ที่คู่ประสานงานแต่ละคู่ที่ได้รับเป็นอินพุต คุณสามารถเลือกวิธีจัดรูปแบบอินพุตของคุณแม้ว่าเอาต์พุตจะต้องเป็นกริดไม่ใช่อาเรย์


ตัวอย่าง

ตัวอย่างอินพุต 1

111111
111111
111111
111111

(3,2)

ตัวอย่างผลลัพธ์ 1

110111
110111
000000
110111

ตัวอย่างอินพุต 2

01101
10100
00010
11111
10110

(1,1), (5,5)

ตัวอย่างผลลัพธ์ 2

00010
00101
10011
01110
01000

ตัวอย่างอินพุต 3

1

(1,1)

ตัวอย่างผลลัพธ์ 3

0

ตัวอย่างอินพุต 4

00000
11111
00000
11111

(2,3), (2,3)

ตัวอย่างผลลัพธ์ 4

00000
11111
00000
11111

นี่คือรหัสกอล์ฟ ใช้กฎมาตรฐาน รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ


ที่เกี่ยวข้อง: codegolf.stackexchange.com/questions/65738/crack-the-safe ไม่ใช่ปัญหาเดียวกัน แต่ เป้าหมายของการท้าทายอื่น ๆ คือการค้นหาว่าการเคลื่อนไหวใดที่จะทำให้เกิดขึ้นการทำเช่นนี้เป็นการใช้รายการการเคลื่อนไหวที่กำหนด
Reto Koradi

@RetoKoradi นอกจากนี้ยังไม่ได้ค่อนข้างดำเนินการเดียวกัน (ความจริงที่ว่าเซลล์ที่ถูกเลือกนั้นถูกสลับเช่นกันทำให้เรื่องนี้ยุ่งยากขึ้นอย่างมาก)
Martin Ender

ฉันขอให้ป้อนข้อมูลเป็น<grid><RETURN><coordinate_x><RETURN><coordinate_y><RETURN>อย่างไร
แมว

รูปแบบและการแยกใด : นั่นหมายความว่าพวกเขาสามารถแยกอินพุต (นั่นคือ "ตัวคั่น" คือ "ป้อน" คีย์)?
Luis Mendo

@LuisMendo ใช่ถ้าใช้งานได้
EEEEEEridan

คำตอบ:


3

CJam, 37 36 ไบต์

qN/W%(~{1$::!\{1a\Te[f.|z}/..^}/W%N*

อินพุตควรมีกริดแรกโดยใช้อักขระที่ไม่ใช่ NULL สองตัวที่แตกต่างกันในบิตสุดท้ายเท่านั้น ( 0และ1ทำงาน) ตามด้วยรายการสไตล์ CJam ของคู่พิกัด

01101
10100
00010
11111
10110
[[1 1] [5 5]]

ทดสอบที่นี่


3

Dyalog APL ขนาด 20 ไบต์

{⍵≠⊃⊃≠/∘.∨/¨⍺=⊂⍳¨⍴⍵}

นี่คือฟังก์ชัน dyadic ที่ใช้กริดเริ่มต้นทางด้านขวาและรายการพิกัดทางด้านซ้าย

หากต้องการป้อนคู่พิกัดเดียวให้ใช้เช่น(⊂2 3)อาร์กิวเมนต์ซ้าย

ลองมันนี่


1

MATL , 39 ไบต์

i,-1H$X!tyZ}:XJx:!XIxi"I@1)=J@2)=|+]2\X!

อินพุตมีรูปแบบต่อไปนี้ (ตัวอย่างสอดคล้องกับตัวอย่างอินพุต 2 ในการท้าทาย):

[0 1 1 0 1; 1 0 1 0 0; 0 0 0 1 0; 1 1 1 1 1; 1 0 1 1 0]  
[1 5; 1 5]

การป้อนข้อมูลแรกคือเมทริกซ์การกำหนดตารางของและ 0 เป็นตัวแยกแถว อินพุตที่สองคือเมทริกซ์ของคู่พิกัดซึ่งแต่ละคอลัมน์เป็นคู่1;

ตัวอย่าง

>> matl i1_2$X!tyZ}:XJx:!XIxi"I@1)=J@2)=|+]2\X!
> [0 1 1 0 1; 1 0 1 0 0; 0 0 0 1 0; 1 1 1 1 1; 1 0 1 1 0]
> [1 5; 1 5]
0 0 0 1 0
0 0 1 0 1
1 0 0 1 1
0 1 1 1 0
0 1 0 0 0

คำอธิบาย

i,           % input matrix
-1H$X!       % rotate clockwise to accomodate input to matrix coordinates
tyZ}         % get numbers of rows (r) and of cols (c)
:XJx         % row vector 1,2,,...,c. Copy to clipboard J and delete
:!XIx        % col vector 1,2,,...,r. Copy to clipboard I and delete
i            % input coordinates (matrix; each col is a coordinate)
"            % for each col of coordinate matrix
    I@1)=    % compare col vector of rows with row from coordinate
    J@2)=    % compare row vector of cols with col from coordinate
    |        % "or" with singleton expansion to generate mask
    +        % add that to matrix of values
]            % end for
2\           % modulo 2 to transform result into zeros and ones
X!           % undo rotation

โปรดแจ้งให้เราทราบหากมีผู้แปลออนไลน์สำหรับ matl
Abr001am

ยังไม่ได้ออนไลน์ขอโทษ เฉพาะ Matlab ที่ใช้ฉันเชื่อมโยงในชื่อ
Luis Mendo

0

ทับทิม 114 ไบต์

ใช้เป็นอินพุต:

gอาร์เรย์ของอาร์เรย์ที่แสดงถึงกริดเริ่มต้น

o[x, y]อาร์เรย์ของจุดแต่ละจุดเป็นอาร์เรย์ที่มีสององค์ประกอบเช่น

->g,o{o.map{|i|(r=g[i[1]-1])[e=(i[0]-1)]-=1;r.map!{|j|j+1};g.map{|x|x[e]+=1}};puts g.map{|i|i.map{|j|j%2}.join""}}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.