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.