Kutunun dışında düşünmenin başarmaya değer bir hedef olduğunu duymaya devam ediyorum ama başarılı bir şekilde yapıp yapmadığımı nasıl söyleyebilirim?
Bu ikilemi çözmek için teorik olarak aşağıdaki gibi çıktılar üretmesi gereken bir Brainwave-ASCII çevirmen yazdım.
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
veya
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
Bu, birinin kutunun dışında düşünüp düşünmediğini söylemeyi oldukça kolaylaştırır. ( #
Çıktının bir parçası değildir ve yeni satırları temsil eder.)
Ancak, bir hata nedeniyle, bazen çıktının yalnızca daha küçük bir kısmı döndürülür:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
Görev
Lütfen Brainwave-ASCII çevirmen çıkışını otomatik olarak yeniden toplama işlemini okuyan thinking
ve kutuda olup olmadığını , girişin dışında söyleyemeyen ya da girmeyen bir şey yazarak otomatik olarak sınıflandırmamı sağlayın .
Giriş
Liste halinde veya içeren yeni satırlarla sınırlandırılmış aynı uzunlukta dizeler
- dize
thinking
veya geçerli ön veya son ekleri +-|
dikdörtgen bir kutu veya bunun geçerli kısımlarını oluşturan karakterler- alanlarda
- HAYIR
#
, bunlar sadece girdi satırlarının uçlarını işaretleme zorluğuna dahil edilmiştir.
Çıktı
- kutunun dışındaysa bir gerçek değer
thinking
- Bir falsy değeri ise
thinking
kutunun içinde - bir tat üçüncü belki de girişten olup olmadığını araştırmak edilemiyorsa değer
thinking
kutusunda olup
Örnekler
Doğru:
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
| | #
+---------+ #
thinking #
#
+#
|#
|#
inking |#
thinking #
-------+ #
++ # (thinking is not in the box, so it must be outside)
++ # (this is also the smallest possible box)
+ #
t#
+----+# (The box is not wide enough to contain "thinking")
---# (The box is not high enough to contain "thinking")
---#
Dize girişi olarak:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Falsy:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
Dize girişi olarak:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Olabilir:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Dize girişi olarak:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
kurallar
- Bu kod-golf , bu yüzden mümkün olduğunca az byte kullanmaya çalışın.
- Belki değeri sürece truthy / falsy değerden farklı olduğunu ve tüm belki-girişler için aynıdır serbestçe seçilebilir. Aynı zamanda bir hata olabilir.
- Girişin her zaman geçerli olduğunu varsayabilirsiniz (örneğin
+-ghiknt|
, birden fazla kutudan başka bir karakter içermez , ...).
+\n+
bir kelime için kutu çok küçük