Bu görevin amacı, herhangi bir 'görüntüdeki' tüm yüzleri tanımlamak, temizlemek ve işaretlemek.
Yüzünde ne var?
Yüz, Z'nin 1'den büyük bir tam sayı olduğu ZxZ karesi olacak. Sol üst ve sağ üst köşeler ve merkez 'O' karakterleri olacak ve alt çizgi ise yeterince '' 've' 'çevreleyen olacak Satırın kalanını doldurmak için '_' karakterleri. Örnekler:
3x3 bir yüz:
O O
O
\_/
5x5 yüz:
O O
O
\___/
7x7 bir yüz:
O O
O
\_____/
vb.
Giriş
Girdi, STDIN'de olacak ve birkaç eşit uzunluktaki karakter dizisinden oluşacaktır.
Çıktı
Çıktı, tanınabilir tüm yüzleri temizlenmiş (yani gözler, burun ve ağız şeridi dışındaki tüm karakterler yüz sınırları içinden çıkarılacak) ve kutulu (+, - ve | karakterleriyle çevrili) girdi olmalıdır. İki veya daha fazla yüzün üst üste geldiği yerlerde, her ikisi de temizlenmeli ve kutulanmalı, ancak daha büyük yüze öncelik verilmelidir (üstüne yerleştirilmelidir); iki yüzün de aynı boyutta olması durumunda, öncelik uygulayıcının takdirine bırakılır. Girişin yüzü yoksa, çıkış girişle aynı olmalıdır.
Bazı örnekler
Giriş:
*******
*******
**O*O**
***O***
**\_/**
*******
*******
Çıktı:
*******
*+---+*
*|O O|*
*| O |*
*|\_/|*
*+---+*
*******
Giriş (eksik yüz):
*******
*******
**O*O**
*******
**\_/**
*******
*******
Çıktı:
*******
*******
**O*O**
*******
**\_/**
*******
*******
Giriş (iç içe geçmiş yüzler):
*******
*O***O*
**O*O**
***O***
**\_/**
*\___/*
*******
Çıktı:
+-----+
|O O|
| |
| O |
| |
|\___/|
+-----+
Giriş (çoklu yüzler):
~{$FJ*TBNFU*YBVEXGY%
FOCO$&N|>ZX}X_PZ<>}+
X$OOPN ^%£)LBU{JJKY%
@\_/$£!SXJ*)KM>>?VKH
SDY%£ILO(+{O:HO(UR$W
XVBFTER^&INLNLO*(&P:
>?LKPO)UJO$£^&L:}~{&
~@?}{)JKOINLM@~}P>OU
:@<L::@\___/GER%^*BI
@{PO{_):<>KNUYT*&G&^
Çıktı:
+---+*TBNFU*YBVEXGY%
|O O|&N|>ZX}X_PZ<>}+
| O |N ^%£)LBU{JJKY%
|\_/|£+-----+M>>?VKH
+---+I|O O|HO(UR$W
XVBFTE| |LO*(&P:
>?LKPO| O |&L:}~{&
~@?}{)| |@~}P>OU
:@<L::|\___/|ER%^*BI
@{PO{_+-----+YT*&G&^
Giriş (sınırın yakınında):
~{$FJ*TBNFU*YBVEXGY%
OCO$&N|>ZX}X_PZ<>}+^
$OOPN ^%£)LBU{JJKY%{
\_/$£!SXJ*)KM>>?VKHU
SDY%£ILO(+{8:HO(UR$W
XVBFTER^&INLNLO*(&P:
>?LKPO)UJ^$£^&L:}~{&
~@?}{)JKOINLM@~}P>OU
:@<L::@BJYT*GER%^*BI
@{PO{_):<>KNUYT*&G&^
Çıktı:
---+J*TBNFU*YBVEXGY%
O O|&N|>ZX}X_PZ<>}+^
O |N ^%£)LBU{JJKY%{
\_/|£!SXJ*)KM>>?VKHU
---+£ILO(+{8:HO(UR$W
XVBFTER^&INLNLO*(&P:
>?LKPO)UJ^$£^&L:}~{&
~@?}{)JKOINLM@~}P>OU
:@<L::@BJYT*GER%^*BI
@{PO{_):<>KNUYT*&G&^
Giriş (örtüşen yüzler):
~{$FJ*TBNFU*YBVEXGY%
FXC£$&N|>ZX}X_PZ<>}+
X$*OPN O%£)LBO{JJKY%
@:U%$£!SXJ*)KM>>?VKH
SDY%£OLO(+{P:HO(UR$W
XVBFTER^&IOLNLO*(&P:
>?L\___/JR$£^&L:}~{&
~@?}{)JKOINLM@~}P>OU
:@<L::@\_____/R%^*BI
@{PO{_):<>KNUYT*&G&^
Çıktı:
~{$FJ*TBNFU*YBVEXGY%
FX+---+-------+Z<>}+
X$|O |O O|JJKY%
@:| | |>?VKH
SD| O| |(UR$W
XV| | O |*(&P:
>?|\__| |:}~{&
~@+---| |}P>OU
:@<L::|\_____/|%^*BI
@{PO{_+-------+*&G&^