MU bulmaca Eğer açabilirsiniz olup olmadığını öğrenmek olduğu bir bulmaca MIhaline MUverilen aşağıdaki işlemleri:
Dizeniz bitiyorsa sonuna sonuna
Ibir ekleyebilirsinizU. (ör.MI -> MIU)Dizeniz ile başlıyorsa, dizenin
Markasına parçanın bir kopyasını ekleyebilirsinizM.
(ör.MII -> MIIII)Dizeniz art arda üç tane içeriyorsa
I, bunları birU.
(ör.MIII -> MU)Dizeniz art arda iki tane içeriyorsa
Ubunları silebilirsiniz. (örneğinMUUU -> MU).
Göreviniz, bunun herhangi bir başlangıç ve bitiş dizesi için geçerli olup olmadığını belirleyen bir program oluşturmaktır.
Programınız girdi olarak iki dize alacaktır. Her dize aşağıdakilerden oluşur:
bir
M.en fazla yirmi dokuz
Is veUs.
trueİkinci dizeye ilk dizeden erişilebilirse programınız geri döner (veya programlama dilinizin temsili / YPLRT) ve değilse false(veya YPLRT).
Örnek giriş ve çıkışlar:
MI MII
true
MI MU
false
MIIIIU MI
true
Bunu yapmak için herhangi bir dilde en kısa kod kazanır.
MItam olarak M(I|U)*sayısı nerede I3'ün katı değil Ve böyle bir direkt onay mutlaka kısa kodu için yapar. Ayrıca, ara adımlar için gerekli dizelerin uzunluklarına bağlı bir a priori bilmiyorum, bu yüzden doğrudan arama sadece pratik olmayabilir.
MIbelirli bir ulaşılabilir dizeden başlayarak bir türetme ver .
IMVerilmişse çıkış ne olmalı veya MUMMI?