O desafio
Dadas duas seqüências de caracteres, cada uma com comprimento de até 30, consistindo em caracteres ASCII imprimíveis (códigos ), coloque-as em uma escala de equilíbrio no menor número de bytes de código! Isso consiste nas seguintes etapas:
- Calcular e comparar os pesos das cordas
- Escolha a escala de arte ASCII inclinada adequadamente
- Coloque as duas cordas na balança
As strings podem ser passadas como uma matriz, dois argumentos ou qualquer outro método razoável.
O peso de uma sequência é definido como a soma dos pesos dos caracteres dessa sequência, em que:
- Os espaços têm um peso de 0 (
) - Letras minúsculas têm peso 2 (
abcdefghijklmnopqrstuvwxyz) - Letras maiúsculas têm peso 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - Todos os outros símbolos têm um peso de 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~)
As escalas são assim:
. _
| _- * / \
| - * / \
_- * | / \
_- * | / \
/ \ | * ------ *
/ \ |
/ \ |
/ \ |
* ------ * |
______ | ______
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
| / \
| / \
| / \
| * ------ *
______ | ______
.
|
______ | ______
/ \ | / \
/ \ | / \
/ \ | / \
/ \ | / \
* ------ * | * ------ *
|
|
______ | ______
Se a primeira corda for mais pesada, use o primeiro desenho como base da sua saída; se a segunda corda for mais pesada, use o segundo desenho; se as cordas tiverem o mesmo peso, use a terceira. Espaço em branco à direita é permitido.
Usarei um segmento do terceiro desenho como base para todos os exemplos a seguir.
A primeira corda deve ser colocada na panela esquerda e a segunda corda na panela direita.
Coloque uma corda em uma panela colocando seus caracteres não espaciais dentro da área 6x5 imediatamente acima dos traços, conforme marcado por #s aqui (você pode substituir parte da balança - isso é bom):
###### _ ###### ###### ###### / ###### \ * ------ *
Todos esses caracteres devem ser "resolvidos", ie. acima de um -caractere ou outro caractere da string:
ERRADO ERRADO CORRETO
____ ____ ____
f / \ / \ / \
eu \ / \ / \
/ \ / hov \ / s \
/ oating \ / eri ng \ / ettled \
* ------ * * ------ * * ------ *
Além disso, toda a pilha deve ser a mais plana possível, o que significa que das seis colunas de 1 largura, a altura da mais alta e a altura da mais curta não devem diferir em mais de 1:
ERRADO ERRADO CORRETO CORRETO
[mais alto: 5] [mais alto: 4] [mais alto: 5] [mais alto: 2]
[menor: 0] [menor: 2] [menor: 4] [menor: 2]
5__5_ ____ 5_5__ ____
45445 & / \ 445454 / \
45445 $% e $ @ 445454 / \
/ 45445 &% @% $ & 445454% & $ @% &
/ 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \
* ------ * * ------ * * ------ * * ------ *
A ordem / disposição exata dos personagens não importa. A seguir, são apresentados todos os arranjos válidos para a sequência "Pese suas palavras!":
____ ____ ____ ____ / \ / \ / \ / \ ds! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Pesagem \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Casos de teste
ENTRADA: "GOLFE DE CÓDIGO", "desafios de codificação"
PESOS: 32, 32
EXEMPLO DE SAÍDA:
.
|
______ | ______
/ \ | / \
/ \ | nge \ s
/ OO \ | challe
/ CFGLED \ | /codificação\
* ------ * | * ------ *
|
|
______ | ______
ENTRADA: "", "$"
PESOS: 0, 3
EXEMPLO DE SAÍDA:
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
| / \
| / \
| / $ \
| * ------ *
______ | ______
ENTRADA: "VOCÊ SABE O QUE DIZEM!", "There_always_a_relevant_xkcd"
PESOS: 75, 65
EXEMPLO DE SAÍDA:
. tr_a_s
| _hekx_y
| - * elcdta
_- * | revanw
_- * | / e's_al \
T / \ | * ------ *
AUYOHY
A! HWYK
/ OTSMEW \ |
* ------ * |
______ | ______
+1. Primeiro: se os espaços não "pesam" nada e não são incluídos na obra de arte, por que incluí-los? É apenas uma sobrecarga desnecessária filtrá-los primeiro. Em segundo lugar: isso parece um desafio "2 em 1" / camaleão para mim - Desafio 1: Determine qual corda é "mais pesada", Desafio 2: Gere alguma arte ASCII.