Mengenali Tebakan Domino: Push Dominoes

Mengenali Tebakan Domino: Push Dominoes

Dalam artikel ini, kita akan membahas tebakkan domino yang memungkinkan kita untuk mengetahui keadaan akhir setelah beberapa domino telah ditebarkan. Proses ini mirip dengan permainan domino tradisional, namun dengan adanya aturan dan keterlibatan mental.

Masalah

Diberikanlah sebuah array dominoes yang berisi simbol 'L', 'R', atau '.'. Simbol 'L' menunjukkan bahwa dominonya telah ditebarkan ke kiri, 'R' menunjukkan bahwa dominonya telah ditebarkan ke kanan, dan '.' menunjukkan bahwa dominonya belum ditebarkan.

Tugas

Buatlah sebuah fungsi yang menerima array dominoes sebagai input dan mengembalikan string yang merepresentasikan keadaan akhir setelah beberapa domino telah ditebarkan.

Penerapan

Kita dapat memulai dengan memeriksa dominonya secara berurutan. Jika dominonya adalah '.', maka kita tidak perlu melakukan apapun, karena belum ditebarkan. Jika dominonya adalah 'L', maka kita harus mengetahui apakah dominonya sebelumnya telah ditebarkan ke kiri atau kanan.

Jika dominonya sebelumnya telah ditebarkan ke kiri, maka kita dapat menulis 'L' sebanyak jumlah dominonya yang belum ditebarkan. Jika domino sebelumnya telah ditebarkan ke kanan, maka kita harus memutuskan apakah dominonya sekarang akan ditebarkan ke kiri atau kanan.

Jika dominonya sekarang adalah 'R', maka kita harus mengetahui apakah dominonya sebelumnya telah ditebarkan ke kiri atau kanan. Jika domino sebelumnya telah ditebarkan ke kiri, maka kita dapat menulis 'R' sebanyak jumlah dominonya yang belum ditebarkan. Jika domino sebelumnya telah ditebarkan ke kanan, maka kita tidak perlu melakukan apapun.

Kode

Berikut adalah kode dalam bahasa Python yang menerapkan aturan di atas:

class Solution:
 def pushDominoes(self, dominoes: str) -> str:
 ans = []
 count = 0
 
 for domino in dominoes:
 if domino == '.':
 count += 1
 continue
 
 elif domino == 'L':
 if not ans or ans[-1] == 'L':
 ans += ['L'*count]
 elif ans and ans[-1] == 'R':
 ans += ['R'*(count//2) + ('.' if count%2!=0 else '') + 'L'*(count//2)]
 
 elif domino == 'R':
 if ans and ans[-1] == 'R':
 ans += ['R'*count]
 elif not ans or (ans and ans[-1] == 'L'):
 ans += ['.'*count]
 
 ans.append(domino)
 count = 0
 
 if ans and ans[-1] == 'R':
 ans += ['R'*count]
 if (ans and ans[-1] == 'L') or not ans:
 ans += ['.'*count]
 
 return ''.join(ans)

Contoh

Misalkan kita memiliki array dominoes sebagai berikut: ['.', 'L', '.', 'R', 'L']. Maka, fungsi di atas akan mengembalikan string sebagai berikut: 'LL.R'.

Dengan demikian, tebakkan domino memungkinkan kita untuk mengetahui keadaan akhir setelah beberapa domino telah ditebarkan. Proses ini memerlukan keterlibatan mental dan pemahaman aturan yang tepat.