Pertanyaan ini baru saja tren pada ulasan kode dan saya pikir Anda mungkin suka itu diadaptasi sebagai tantangan codegolf:
Anda diberi daftar x rumah kosong yang direpresentasikan sebagai boolean. Setiap hari, rumah-rumah bersaing dengan yang berdekatan. 1 mewakili rumah "aktif" dan 0 mewakili rumah "tidak aktif". Jika tetangga di kedua sisi rumah yang diberikan keduanya aktif atau keduanya tidak aktif, maka rumah itu menjadi tidak aktif pada hari berikutnya. Kalau tidak, ia menjadi aktif.
def get_state_as_pos(thelist, pos):
if thelist[pos-1] == thelist[pos+1]:
return 0
else:
return 1
Misalnya, jika kita memiliki sekelompok tetangga [0, 1, 0] maka rumah di [1] akan menjadi 0 karena kedua rumah di kiri dan kanan keduanya tidak aktif. Sel-sel di kedua ujungnya memeriksa sisi yang berlawanan juga, sehingga tetangga pada indeks 0 berada pada indeks length-1
dan indexn1 dan sebaliknya. Bahkan setelah memperbarui sel, Anda harus mempertimbangkan status sebelumnya ketika memperbarui yang lain sehingga informasi status setiap sel diperbarui secara bersamaan.
Fungsi ini mengambil array status dan sejumlah langkah dan harus menampilkan status rumah setelah jumlah langkah yang diberikan.
input: states = [1, 0, 0, 0, 0, 1, 0, 0], steps = 1
output should be [0, 1, 0, 0, 1, 0, 1, 1]
input: states = [1, 1, 1, 0, 1, 1, 1, 1], steps = 2
intermediate state= [0, 0, 1, 0, 1, 0, 0, 0]
output should be [0, 1, 0, 0, 0, 1, 0, 0]
input: states = [1], steps=1
output: states= [0]
Ambil daftar dan langkah sesuka Anda dan hasilkan daftar yang dihasilkan melalui I / O default . Celah standar dilarang. Ini codegolf, jawaban terpendek dalam byte menang!
[0, 1, 0, 0, 1, 0, 1, 1]
?Jawaban:
05AB1E ,
14131096 byteBerdasarkan solusi Jag Shaggy
Cobalah online!
Solusi 9 byte yang tidak perlu pintar:
Cobalah online!
sumber
Python 2 , 72 byte
Cobalah online!
sumber
Bahasa Wolfram (Mathematica) , 31 byte
Cobalah online!
CellularAutomaton
menganggap daftar input adalah siklik.sumber
JavaScript (ES6), 57 byte
Mengambil input sebagai
(steps)(array)
.Cobalah online!
sumber
Japt
-mh
,11109 byteI / O negara sebagai array 2D tunggal.
Cobalah
sumber
Retina , 51 byte
Cobalah online! Mengambil jumlah langkah pada baris pertama dan string
0
s dan1
s pada baris kedua. Penjelasan:Hapus jumlah langkah dari input.
Ulangi angka itu beberapa kali.
Salin digit ujung ke ujung lainnya untuk mensimulasikan pembungkus.
Lakukan operasi XOR.
sumber
APL (Dyalog Extended) , 12 byte SBCS
Program lengkap. Meminta stdin untuk array status dan kemudian untuk sejumlah langkah. Mencetak ke stdout.
Cobalah online!
⎕
mendapatkan input yang dievaluasi dari konsol (array of States)⊢
untuk itu, terapkan ...1(
...)⍣⎕
fungsi diam-diam berikut, masukkan jumlah kali, setiap kali dengan1
argumen kiri:⌽⍢⌽
putar argumen kanan 1 langkah ke kiri saat dibalik (mis. putar satu langkah ke kanan)⌽≠
XOR dengan argumen diputar 1 langkah ke kirisumber
Python 2 , 71 byte
Cobalah online!
sumber
Jelly , 7 byte
Cobalah online!
Program lengkap. Output tunggal diwakili sebagai
x
bukan[x]
.sumber
Pyth , 24 byte
Cobalah online!
sumber
Ruby , 59 byte
Cobalah online!
sumber