Cel
Mam ładne zdjęcie, które chcę zawiesić na ścianie. I chcę, żeby wisiał tam w spektakularny sposób, więc postanowiłem powiesić go na npaznokciach, gdzie njest jakakolwiek dodatnia liczba całkowita.
Ale jestem też niezdecydowany, więc jeśli zmienię zdanie, nie chcę mieć problemów z usunięciem zdjęcia. Dlatego usunięcie jednego z npaznokci powinno spowodować, że obraz spadnie. Czy wspomniałem, że w moim domu nie ma tarcia?
Możesz mi pomóc?
Zasady
- Twój program musi odczytać liczbę
nze standardowego wejścia i wydrukować na standardowe wyjście (lub odpowiedniki w Twoim języku). - Dane wyjściowe muszą być rozwiązaniem zgodnym ze specyfikacją danych wyjściowych bez żadnych znaków końcowych lub wiodących. Jednak końcowe białe znaki i / lub znaki nowej linii są dopuszczalne.
- Musisz użyć dokładnie
ngwoździ. - Zakładając, że świat jest pozbawiony tarcia, Twoje rozwiązanie musi spełniać następujące warunki:
- Wisząc obraz zgodnie z opisem rozwiązania, obraz nie może spaść.
- Jeśli którykolwiek z paznokci zostanie usunięty, zdjęcie musi spaść.
- Obowiązują standardowe luki. W szczególności nie możesz składać próśb o np. Program weryfikacji rozwiązań brutalnej siły.
Zauważ, że 4.2 już oznacza, że wszystkie npaznokcie muszą być w to zaangażowane.
Specyfikacja wyjściowa
- Wszystkie gwoździe są nazywane od lewej do prawej w pozycji, w której się znajdują, zaczynając od
1. - Istnieją dwa podstawowe sposoby na owinięcie sznurka wokół gwoździa: zgodnie z ruchem wskazówek zegara i przeciwnie do ruchu wskazówek zegara. Oznaczamy krok w prawo za pomocą
>i krok w lewo za pomocą<. - Za każdym razem, gdy sznurek zostanie owinięty wokół gwoździa, wychodzi na gwoździe, więc pominięcie gwoździ oznacza, że sznurek przejdzie przez górną część gwoździ pośrednich.
- Każde rozwiązanie musi zaczynać się od paznokcia,
1a kończyć na paznokciun. - Wynik musi składać się z sekwencji etapów, w których krok jest kombinacją nazwy gwoździa i kierunku, w którym należy go owinąć.
Przykładowy wynik
Oto przykładowy wynik dla n=5i n=3:
1>4<3<2>4>5< # n=5, incorrect solution
1>2<1<2>3<2<1>2>1<3> # n=3, correct solution
A oto wizualna reprezentacja nieprawidłowego rozwiązania dla n=5(awsumz gimp skillz)

Prawidłowe rozwiązanie n=1to po prostu 1>lub 1<. W przypadku wielu gwoździ mogą istnieć różne rozwiązania. Musisz wydać tylko jeden, ponieważ jest to część twojego wyniku.
Weryfikacja
Możesz sprawdzić, czy rozwiązanie jest poprawne tutaj: www.airblader.de/verify.php .
Wykorzystuje żądanie GET, więc możesz zadzwonić bezpośrednio, jeśli chcesz. Na przykład, jeśli fooplik zawiera rozwiązanie w każdej linii, możesz użyć
cat foo | while read line; do echo `wget -qO- "www.airblader.de/verify.php?solution=$line" | grep "Passed" | wc -l`; done
Jeśli uważasz, że rozwiązanie jest poprawne, ale weryfikator oznaczy je jako nieprawidłowe, daj mi znać!
Edycja: A jeśli twój wynik jest tak długi, że żądanie GET go nie wycofa, daj mi znać, a utworzę wersję żądania POST. :)
Punktacja
To jest golf golfowy. Wynik to liczba bajtów kodu źródłowego w kodowaniu UTF-8, np. Użyj tego narzędzia . Istnieje jednak potencjalna premia za każde przesłanie:
Uruchom swój program dla wszystkich nw zakresie [1..20]i dodaj długość wszystkich wyjść, aby określić wynik wyjściowy . Odejmij swój wynik wyjściowy, 6291370aby uzyskać liczbę punktów bonusowych, które możesz odjąć od liczby bajtów, aby uzyskać ogólny wynik . Nie ma kary, jeśli wynik końcowy jest wyższy niż ta liczba.
Zgłoszenie z najniższą ogólną liczbą punktów wygrywa. W mało prawdopodobnym przypadku remisu przerywniki remisów są w tej kolejności: wyższe punkty bonusowe, mniejsza liczba bajtów, wcześniejsza data zgłoszenia.
Proszę zamieścić zarówno poszczególne części (liczbę bajtów, punkty bonusowe) wyniku, jak i wynik końcowy, np. „ LOLCODE (44 - 5 = 39)”.
1>rysuje się na zdjęciu). I nie ma miejsca, w nktórym niemożliwe jest rozwiązanie. Prawidłowe rozwiązanie n=2jest 1>2<1<2>.