Wydaje się, od niedawna, nie było dużo a Jimmys spada do ich śmierci, jak widać tu , i tu , gdzie zadano celu ustalenia, czy Jimmy spadnie. Czas położyć kres temu szaleństwu i spróbować ocalić Jimmy'ego.
Jimmy trzy części ciała /
, o
oraz \
umieszczony tak
/o\
Platformy są reprezentowane przez -
. Jimmy spadnie z platformy, jeśli mają dwie lub więcej części ciała, które nie znajdują się bezpośrednio nad platformą.
Kilka przykładów:
/o\
- -------
Jimmy zrównoważy się, ponieważ wszystkie ich części ciała znajdują się powyżej -
.
/o\
------ ---
Jimmy zbalansuje się, ponieważ dwie części ciała są powyżej -
s.
/o\
-- ---- --
Jimmy zrównoważy się, mimo że są podzielone na dwie platformy
/o\
-
Jimmy nie zbalansuje się, ponieważ dwie części ciała nie znajdują się nad platformą.
Ponieważ podaż mojej platformy jest na wyczerpaniu, mam tylko platformy o długości 5 i ważne jest, abyśmy używali jej jak najmniej.
Twoim zadaniem jest pobranie danych wejściowych Jimmys i wygenerowanie ciągu platform, który zapisze wszystkie dane Jimmys w danych wejściowych. Twój wynik musi korzystać z jak najmniejszej liczby platform, ale każda platforma musi mieć -
szerokość 5.
Zauważ, że zasada, że platforma ma -
szerokość 5 , oznacza, że każda platforma musi mieć odstęp między nimi. ----------
nie jest poprawny w danych wyjściowych, ponieważ będzie uważany za platformę o długości 10, a nie za dwie platformy o długości 5.
Przypadki testowe
/o\ /o\/o\ // input
----- ----- // output
/o\ /o\
----- -----
/o\ /o\ // same input as above
----- ----- // this is also valid output
/o\ /o\
-----
Obowiązują standardowe zasady.
To jest golf golfowy, może wygra najkrótsza odpowiedź!
Odpowiedzi:
Węgiel drzewny ,
1715 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Powtarzaj, gdy pozycja kursora jest mniejsza niż długość wejścia.
Jeśli znakiem w tej pozycji na wejściu jest a
o
lub\
a, wydrukuj 5-
s.Przejdź do następnej postaci, gwarantując w ten sposób przynajmniej jedną przestrzeń między platformami.
Poprzednie 17-bajtowe rozwiązanie to IMHO więcej „Charcoal-y”.
Wypróbuj online! Link jest do pełnej wersji kodu. Dane wyjściowe obejmują dane wejściowe, co pokazuje poprawność rozwiązania. Wyjaśnienie:
Wydrukuj dane wejściowe i przejdź na początek następnego wiersza.
Pętla nad każdą postacią wejścia, aby upewnić się, że żaden Jimmy nie zostanie pominięty.
Spójrz na znak nad kursorem. Jeśli nie ma, lub jest to spacja, lub
/
nic nie rób, w przeciwnym razie wydrukuj 5-
s.Przejdź do następnej postaci, gwarantując w ten sposób przynajmniej jedną przestrzeń między platformami.
źródło
Python 2 ,
7067 bajtówWypróbuj online!
-3 bajty dzięki Kevin Cruijssen i Neil
Nie najładniejszy, nie wiem, jak lepiej poradzić sobie z resztkami cięć ...
Niestety nie możemy zastąpić obu końców każdej platformy spacjami za pomocą pojedynczego
re.sub
wywołania, ponieważ w przypadku 2 platform znajdujących się w jednym miejscu, odstępu między nimi nie można dopasować więcej niż jeden raz. Asercja lookahead / lookbehind nie pomoże, ponieważ nic pasującego do tych asercji nie zostanie zastąpione.Za pomocą jednego
re.sub
odwołania:Python 3.8 (wersja wstępna) , 78 bajtów
Wypróbuj online!
źródło
/
a następnie[^ ]
.JavaScript (ES6),
56 5554 bajtówWypróbuj online!
Lub 47 bajtów, jeśli zwracanie tablicy znaków jest dopuszczalne.
źródło
Python 3 ,
158164160 bajtówWypróbuj online!
To jest moja pierwsza odpowiedź na pytanie w golfa i cieszę się, że dotyczy pytania Jimmy'ego!
Wyjaśnienie:
a=input();r=""
: Wprowadź dane wejściowe i zainicjuj nowy ciągr
.for i,c in enumerate(a):
: Wylicz na podstawie danych wejściowych.try:r[i] ... except:
: Sprawdź, czyr[i]
istnieje - jeśli nie, przetworzexcept
blok.if c in"/o":
: Sprawdź, czy obecna postać znajduje się w pierwszych dwóch częściach ciała Jimmy'ego.r+=(a[i+5<len(a)and i+5or len(a)-1]=="o"and" "or"")+"----- "
: Jeśli tak, dodaj nowy segment. Dodaj miejsce przed naszym nowym segmentem, jeśli inna głowa Jimmy'ego jest obecna w pięciu postaciach.else:r+=" "
: W przeciwnym razie po prostu dodaj spację.print(r)
: Wydrukuj nasz wynik końcowy.źródło
Siatkówka ,
2321 bajtów-2 bajty dzięki @Neil .
Zawiera jedno końcowe miejsce w drugim, czwartym i szóstym wierszu.
Port odpowiedzi @negativeSeven w Pythonie 2 , więc upewnij się, że go głosujesz!
Wypróbuj online.
Wyjaśnienie:
Zamień wszystko
"/"
na" "
:Dodaj 5 spacji końcowych:
Zastąp wszystkie podciągi rozmiaru szóstego, które nie zaczynają się spacją, przez
"----- "
:źródło
\S
zamiast[^ ]
?Galaretka , 35 bajtów
Wypróbuj online!
Monadyczny link, który przyjmuje dane wejściowe jako ciąg znaków i zwraca ciąg galaretki z platformami.
Inspiruje się odpowiedzią @ negativeseven .
źródło
05AB1E ,
2524 bajtówPort odpowiedzi @negativeSeven w Pythonie 2 , więc upewnij się, że go głosujesz!
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Japt ,
2322 bajtówPort rozwiązania JS firmy Arnauld, który jestem zbyt wyczerpany, aby w pełni przetestować. Jeśli jest nieważny, czy Diament może usunąć?
Spróbuj
źródło