Ziel dieser Aufgabe ist es, alle Gesichter in einem bestimmten „Bild“ zu identifizieren, zu bereinigen und zu markieren.
Was steckt in einem Gesicht?
Eine Fläche ist ein ZxZ-Quadrat, wobei Z eine ungerade Ganzzahl größer als 1 ist. Die obere linke und rechte Ecke und die Mitte sind 'O'-Zeichen, und die untere Zeile ist ein' \ 'und ein' / ', die genug umgeben '_' Zeichen, um den Rest der Zeile auszufüllen. Beispiele:
ein 3x3 Gesicht:
O O
O
\_/
ein 5x5 Gesicht:
O O
O
\___/
ein 7x7 Gesicht:
O O
O
\_____/
usw.
Eingang
Die Eingabe erfolgt über STDIN und besteht aus einer Reihe von Zeichenfolgen gleicher Länge.
Ausgabe
Die Ausgabe sollte die Eingabe sein, bei der alle erkennbaren Gesichter gelöscht sind (dh alle Zeichen mit Ausnahme von Augen, Nase und Mund müssen innerhalb der Gesichtsgrenzen entfernt werden) und umrahmt (umgeben von den Zeichen +, - und |). Wenn sich zwei oder mehr Gesichter überlappen, sollten beide gelöscht und eingerahmt werden, aber das größere Gesicht sollte Vorrang haben (es sollte oben platziert werden). Wenn beide Flächen gleich groß sind, liegt die Priorität im Ermessen des Implementierers. Wenn die Eingabe keine Flächen enthält, sollte die Ausgabe mit der Eingabe identisch sein.
Einige Beispiele
Eingang:
*******
*******
**O*O**
***O***
**\_/**
*******
*******
Ausgabe:
*******
*+---+*
*|O O|*
*| O |*
*|\_/|*
*+---+*
*******
Eingabe (unvollständiges Gesicht):
*******
*******
**O*O**
*******
**\_/**
*******
*******
Ausgabe:
*******
*******
**O*O**
*******
**\_/**
*******
*******
Eingabe (verschachtelte Gesichter):
*******
*O***O*
**O*O**
***O***
**\_/**
*\___/*
*******
Ausgabe:
+-----+
|O O|
| |
| O |
| |
|\___/|
+-----+
Eingabe (mehrere Gesichter):
~{$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&^
Ausgabe:
+---+*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&^
Eingabe (nahe Grenze):
~{$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&^
Ausgabe:
---+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&^
Eingabe (überlappende Flächen):
~{$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&^
Ausgabe:
~{$FJ*TBNFU*YBVEXGY%
FX+---+-------+Z<>}+
X$|O |O O|JJKY%
@:| | |>?VKH
SD| O| |(UR$W
XV| | O |*(&P:
>?|\__| |:}~{&
~@+---| |}P>OU
:@<L::|\_____/|%^*BI
@{PO{_+-------+*&G&^