Wyzwanie
Biorąc pod uwagę dwa ciągi, każdy o długości do 30, składające się z drukowalnych znaków ASCII (kody ), umieść je na skali wagi w jak najmniejszej liczbie bajtów kodu! Składa się z następujących kroków:
- Oblicz i porównaj wagi strun
- Wybierz odpowiednio pochyloną skalę ASCII-art
- Umieść dwa ciągi na wadze
Ciągi mogą być przekazywane jako tablica, dwa argumenty lub dowolna inna rozsądna metoda.
Ciężar łańcucha jest zdefiniowany jako suma mas znaków tego łańcucha, gdzie:
- Spacje mają wagę 0 (
) - Małe litery mają wagę 2 (
abcdefghijklmnopqrstuvwxyz) - Wielkie litery mają wagę 4 (
ABCDEFGHIJKLMNOPQRSTUVWXYZ) - Wszystkie pozostałe symbole mają wagę 3 (
!"#$%&'()*+,-./0123456789:;<=>?@[\]^_`{|}~)
Skale wyglądają następująco:
. _
| _- * / \
| - * / \
_- * | / \
_- * | / \
/ \ | * ------ *
/ \ |
/ \ |
/ \ |
* ------ * |
______ | ______
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
| / \
| / \
| / \
| * ------ *
______ | ______
.
|
______ | ______
/ \ | / \
/ \ | / \
/ \ | / \
/ \ | / \
* ------ * | * ------ *
|
|
______ | ______
Jeśli pierwszy ciąg jest cięższy, użyj pierwszego rysunku jako podstawy wyników; jeśli drugi ciąg jest cięższy, użyj drugiego rysunku; jeśli struny mają równą wagę, użyj trzeciego. Końcowe białe znaki są dozwolone.
Będę używał segmentu trzeciego rysunku jako podstawy dla wszystkich poniższych przykładów.
Pierwszy sznurek należy umieścić na lewej szalce, a drugi sznur na prawej szalce.
Umieść ciąg na patelni, umieszczając jego znaki spacji w obszarze 6x5 bezpośrednio nad kreskami, jak zaznaczono #tutaj s (możesz w końcu nadpisać część skali równowagi - to dobrze):
###### _ ###### ###### ###### / ###### \ * ------ *
Wszystkie te postacie powinny być „rozliczone”, tj. powyżej -znaku lub innego znaku z ciągu:
ŹLE ŹLE PRAWIDŁOWO
____ ____ ____
f / \ / \ / \
l \ / \ / \
/ \ / hov \ / s \
/ oating \ / eri ng \ / ettled \
* ------ * * ------ * * ------ *
Ponadto cały stos powinien być możliwie jak najbardziej płaski, co oznacza, że z sześciu kolumn o szerokości 1 wysokość najwyższego i najkrótszego nie może różnić się więcej niż o 1:
ŹLE ŹLE POPRAWNIE POPRAWNIE
[najwyższy: 5] [najwyższy: 4] [najwyższy: 5] [najwyższy: 2]
[najkrótszy: 0] [najkrótszy: 2] [najkrótszy: 4] [najkrótszy: 2]
5__5_ ____ 5_5__ ____
45445 i / \ 445454 / \
45445 $% i $ @ 445454 / \
/ 45445 i% @% $ i 445454% i $ @% &
/ 45445 \ / & $ @ $ &% \ / 445454 \ / $ @ $% $$ \
* ------ * * ------ * * ------ * * ------ *
Dokładna kolejność / układ znaków nie ma znaczenia. Poniżej przedstawiono wszystkie poprawne ustalenia dla ciągu „Zważ swoje słowa!”:
____ ____ ____ ____ / \ / \ / \ / \ ds! \ / owd oe \ u! Wd \ ourwor Wihuos yoiwgr eghioo / Weighy \ / egyrr! \ / Wrhd! S \ / rrsuwy \ * ------ * * ------ * * ------ * * ------ *
Przypadki testowe
WEJŚCIE: „KOD GOLF”, „wyzwania kodowania”
WAGA: 32, 32
PRZYKŁADOWE WYJŚCIE:
.
|
______ | ______
/ \ | / \
/ \ | nge \ s
/ OO \ | mały
/ CFGLED \ | /kodowanie\
* ------ * | * ------ *
|
|
______ | ______
WEJŚCIE: „”, „$”
WAGA: 0, 3
PRZYKŁADOWE WYJŚCIE:
_.
/ \ * -_ |
/ \ * - |
/ \ | * -_
/ \ | * -_
* ------ * | / \
| / \
| / \
| / $ \
| * ------ *
______ | ______
WEJŚCIE: „WIESZ CO MÓWIĄ!”, „There_always_a_relevant_xkcd”
WAGA: 75, 65
PRZYKŁADOWE WYJŚCIE:
. tr_a_s
| _hekx_y
| - * elcdta
_- * | revanw
_- * | / e's_al \
T / \ | * ------ *
AUYOHY |
A! HWYK |
/ OTSMEW \ |
* ------ * |
______ | ______
+1. Po pierwsze: jeśli przestrzenie nic nie „ważą” i nie zostają uwzględnione w grafice, to po co w ogóle je uwzględniać? To po prostu niepotrzebne obciążenie, aby je najpierw odfiltrować. Po drugie: dla mnie jest to wyzwanie „2 w 1” / kameleon - Wyzwanie 1: Określ, który łańcuch jest „cięższy”, Wyzwanie 2: Wygeneruj trochę sztuki ASCII.