Saya terus mendengar bahwa berpikir di luar kotak adalah tujuan yang layak dicapai, tetapi bagaimana saya bisa tahu jika saya berhasil melakukannya?
Untuk mengatasi dilema ini saya sudah menulis -translator Brainwave-to-ASCII yang secara teori harus menghasilkan output seperti
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
atau
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
yang membuatnya cukup mudah untuk mengetahui apakah seseorang berpikir di luar kotak atau tidak. (Ini #
bukan bagian dari output dan mewakili baris baru.)
Namun, karena bug terkadang hanya sebagian kecil dari output yang dikembalikan:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
Tugas
Tolong bantu saya untuk secara otomatis mengklasifikasikan output -translator Brainwave-to-ASCII dengan menulis sebuah program atau fungsi yang membaca reprensentasi ascii dan mengembalikan apakah thinking
ada di dalam kotak, di luarnya atau tidak dapat diketahui dari input.
Memasukkan
Satu set string dengan panjang yang sama baik sebagai daftar atau dibatasi oleh baris baru yang mengandung
- string
thinking
atau pre- atau suffix yang valid - karakter yang
+-|
membentuk kotak persegi panjang atau bagian yang valid dari itu - spasi
- TIDAK
#
, itu hanya termasuk dalam tantangan untuk menandai ujung jalur input.
Keluaran
- sebuah truthy nilai jika
thinking
berada di luar kotak - sebuah falsy nilai jika
thinking
dalam kotak - sepertiga yang berbeda mungkin bernilai jika tidak dapat ditentukan dari input apakah
thinking
ada di dalam kotak atau tidak
Contohnya
Benar:
#
+------+ #
| | 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")
---#
Sebagai input string:
" \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#
-#
Sebagai input string:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Mungkin:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Sebagai input string:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Aturan
- Ini adalah kode-golf , jadi coba gunakan sesedikit mungkin byte.
- Nilai mungkin dapat dipilih secara bebas asalkan berbeda dari nilai true / falsy dan sama untuk semua mungkin-input. Ini juga bisa menjadi kesalahan.
- Anda dapat mengasumsikan bahwa input selalu valid (mis. Tidak mengandung karakter lain selain
+-ghiknt|
, tidak lebih dari satu kotak, ...).
+\n+
kotak terlalu kecil untuk satu kata