Alice è stagista in un'azienda che utilizza Brainfuck come lingua principale per lo sviluppo sia lato client che lato server. Alice ha appena scritto il suo primo codice ed è un po 'nervosa mentre si prepara per la sua prima recensione.
Alice vuole rendere il suo codice formattato correttamente e avere un bell'aspetto, ma non ha tempo di leggere la guida sullo stile del codice aziendale di 328 pagine, quindi ha deciso di formattarlo come un quadrato perfetto . Purtroppo, la lunghezza del codice potrebbe essere insufficiente per formare un quadrato, quindi ha deciso di lasciare una fessura rettangolare nel mezzo. Gli spazi vuoti devono essere perfettamente centrati e vicini al quadrato .
Esempi
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
Scrivi un programma o una funzione per aiutare Alice. Dato il codice di Alice come stringa di input, se possibile emetti codice correttamente formattato come descritto di seguito. Se la formattazione è impossibile, emetti emoji piangenti :~(
.
Si tratta di code-golf, quindi le risposte sono classificate in byte con l'obiettivo di ottenere meno byte.
vincoli
- Il tuo programma o funzione dovrebbe prendere una singola stringa come input e produrre una o più righe di testo (o restituire una stringa a più righe o un array di stringhe, se implementi una funzione).
- La stringa di input può contenere qualsiasi carattere ASCII inclusi gli spazi bianchi.
- Tutti gli spazi bianchi in input devono essere ignorati. Non dovrebbero contare per la lunghezza del codice e non dovrebbero essere usati nell'output.
- La stringa di input contiene almeno un carattere non bianco.
- Il codice formattato deve avere gli stessi caratteri non bianchi nello stesso ordine del codice di input.
- Il codice formattato deve essere un quadrato perfetto, ovvero tutte le righe devono avere la stessa lunghezza e il numero di righe deve essere uguale alla lunghezza delle righe.
- Il codice formattato può contenere uno spazio nel mezzo.
- Nell'intervallo possono essere utilizzati solo caratteri spaziali (codice ASCII 32).
- Il divario (se presente) deve essere rettangolare.
- Ogni riga di codice formattato deve contenere almeno un carattere non bianco, ovvero la larghezza dello spazio deve essere strettamente inferiore alla larghezza quadrata (lo spazio 5x1 è inaccettabile per 5x5 quadrati).
- Lo spazio dovrebbe essere orizzontale, ovvero la larghezza dello spazio dovrebbe essere maggiore o uguale all'altezza dello spazio.
- Il divario deve essere perfettamente centrato.
- Di conseguenza la larghezza dello spazio e la parità di altezza dovrebbero essere uguali alla parità dello spazio quadrato (ad esempio per lo spazio quadrato 5x5 può essere 1x1, 3x1 o 3x3).
- Se possibile, output quadrato senza alcun gap.
- In caso di soluzioni multiple, scegline una con il gap più vicino al quadrato, ovvero la differenza tra larghezza del gap e altezza del gap è minima (ad esempio: il gap 10x10 è più preferibile rispetto a 8x6 e 8x6 è più preferibile rispetto a 6x2).
- Se c'è ancora un pareggio, scegli la soluzione con un'area minima del gap (ad esempio il gap 2x2 è più preferibile del 4x4).
- Se è impossibile formattare il codice, emettere
:~(
. - Newline dopo l'ultima riga è facoltativo.
- [Nuovo] Puoi tranquillamente supporre che qualsiasi carattere con un codice inferiore a 33 sia uno spazio bianco. Spero che ti possa aiutare a giocare a golf.
test
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
Test difficili
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
risorse
Per risparmiare spazio è possibile trovare codice di esempio e casi di test aggiuntivi su tio.run
[Nuovo] Puoi dare un'occhiata alla tabella delle soluzioni accettate per input fino a 100 caratteri . Ho scambiato larghezza e altezza perché sembra più intuituve.
Ispirato da: un quadrato di testo
I cambiamenti
Aggiunti 2 test, corretto bug nel codice di esempio.
Aggiunta tabella di soluzioni fino a 100, aggiunta di chiarimenti sugli spazi bianchi.