Powiązane: Raczej podobne (ale o wiele łatwiejsze) wyzwanie w poziomie: tam to naprawiłem (za pomocą taśmy)
Wyzwanie:
Biorąc pod uwagę ciąg zawierający tylko wielkie i / lub małe litery (w zależności od tego, co wolisz) i nowe wiersze, umieść je rope
pionowo, aby je naprawić. Robimy to, sprawdzając różnicę dwóch sąsiednich liter w alfabecie (ignorując zawijanie i tylko schodząc w dół), i wypełniając miejsce tyle ROPE
/ rope
ile byśmy potrzebowali.
UWAGA: Inną kluczową różnicą między tym wyzwaniem a wyzwaniem Tam, w którym to naprawiłem (z taśmą) jest to, że nie marnujemy rope
tego czasu, jak to zrobiliśmy z tape
(sugerowane przez @JonathanAllan w części pierwszej wyzwania).
Przykład:
Wejście:
abc
bcd
ddd
eex
gfz
hka
imh
Wynik:
abc
bcd
Rdd
deE
efR
OPO
gEP
hRE
iOR
kO
PP
mE
R
O
P
E
R
O
P
E
R
O
x
P
z
a
E
R
O
P
E
R
h
Dlaczego?
- Pomiędzy
b
iwd
kolumnie 1 powinna byćc
(długość 1), więc wypełniamy toR
; - Pomiędzy
e
iwg
kolumnie 1 powinna byćf
(długość 1), więc wypełniamy toO
; - Pomiędzy
f
iwk
kolumnie 2 powinno byćghij
(długość 4), więc wypełniamy toPERO
; - Pomiędzy
k
iwm
kolumnie 2 powinno byćl
(długość 1), więc wypełniamy toP
; - Pomiędzy
d
iwc
kolumnie 3 powinno byćefghijklmnopqrstuvw
(długość 19), więc wypełniamy toEROPEROPEROPEROPERO
; - Pomiędzy
x
iwz
kolumnie 3 powinno byćy
(długość 1), więc wypełniamy toP
; - Pomiędzy
a
iwh
kolumnie 3 powinno byćbcdefg
(długość 6), więc wypełniamy toEROPER
.
Zasady konkursu:
- Różnica dotyczy tylko w dół, więc nie ma między nimi liny
za
(kolumna 3 w powyższym przykładzie). - Możliwe jest posiadanie wielu takich samych sąsiadujących liter jak
dd
(kolumna 3 w powyższym przykładzie). - Będziesz nadal używać
ROPE
jednej kolumny na raz, aby nie marnować części (sugerowane przez @JonathanAllan w części 1 wyzwania). - Dozwolone jest przyjmowanie danych wejściowych w dowolnym rozsądnym formacie. Może być pojedynczym ciągiem, tablicą / listą znaków, macierzą znaków itp. Wyjście ma taką samą elastyczność.
- Możesz używać małych i / lub wielkich liter w dowolny sposób. Dotyczy to zarówno wejścia, wyjścia, jak i
ROPE
. - Końcowe spacje są opcjonalne (zwróć uwagę, że poprawna liczba wiodących spacji jest obowiązkowa, więc kolumny są prawidłowe).
Każda ilość końcowych i / lub wiodących nowych linii jest również opcjonalna. - Możesz założyć, że wszystkie przypadki testowe będą miały tę samą długość we wszystkich wierszach, więc
a\naa
/[[a][a,a]]
nie będzie poprawnym wejściem. - Możliwe, że nie
ROPE
jest konieczne, w którym to przypadku dane wejściowe pozostają niezmienione.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
As string:
Input: "abc\nbcd\nddd\neex\ngfz\nhka\nimh"
Output: "abc\nbcd\nRdd\ndeE\nefR\nOPO\ngEP\nhRE\niOR\n kO\n PP\n mE\n R\n O\n P\n E\n R\n O\n P\n E\n R\n O\n x\n P\n z\n a\n E\n R\n O\n P\n E\n R\n h"
As array-matrix:
Input: [[a,b,c],[b,c,d],[d,d,d],[e,e,x],[g,f,z],[h,k,a],[i,m,h]]
Output: [[a,b,c],[b,c,d],[R,d,d],[d,e,E],[e,f,R],[O,P,O],[g,E,P],[h,R,E],[i,O,R],[ ,k,O],[ ,P,P],[ ,m,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,O],[ , ,x],[ , ,P],[ , ,z],[ , ,a],[ , ,E],[ , ,R],[ , ,O],[ , ,P],[ , ,E],[ , ,R],[ , ,h]]
As string:
Input: "a\nz\na"
Output: "a\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nz\na"
As array-matrix:
Input: [[a],[z],[a]]
Output: [[a],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[z],[a]]
As string:
Input: "zz\nyy\nxx\nxx\ncc\ncc\nbb\nad"
Output: "zz\nyy\nxx\nxx\ncc\ncc\nbb\naR\n d"
As array-matrix:
Input: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,d]]
Output: [[z,z],[y,y],[x,x],[x,x],[c,c],[c,c],[b,b],[a,R],[ ,d]]
As string:
Input: "a\nb\nc\nc\nx\nx\ny\nz"
Output: "a\nb\nc\nc\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nR\nO\nP\nE\nx\nx\ny\nz"
As array-matrix:
Input: [[a],[b],[c],[c],[x],[x],[y],[z]]
Output: [[a],[b],[c],[c],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[R],[O],[P],[E],[x],[x],[y],[z]]
As string:
Input: "zai\nybj\nxcq\nxcu\ncxw\ncxw\nbyr\nazw"
Output: "zai\nybj\nxcR\nxcO\ncRP\ncOE\nbPR\naEO\n Rq\n OP\n PE\n ER\n Ru\n OO\n Pw\n Ew\n Rr\n OP\n PE\n ER\n RO\n Ow\n P \n E \n x \n x \n y \n z "
As array-matrix:
Input: [[z,a,i],[y,b,j],[x,c,q],[x,c,u],[c,x,w],[c,x,w],[b,y,r],[a,z,w]]
Output: [[z,a,i],[y,b,j],[x,c,R],[x,c,O],[c,R,P],[c,O,E],[b,P,R],[a,E,O],[ ,R,q],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,u],[ ,O,O],[ ,P,w],[ ,E,w],[ ,R,r],[ ,O,P],[ ,P,E],[ ,E,R],[ ,R,O],[ ,O,w],[ ,P, ],[ ,E, ],[ ,x, ],[ ,x, ],[ ,y, ],[ ,z, ]]
As string:
Input: "asdljasdjk"
Output: "asdljasdjk"
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k]]
Output: [[a,s,d,l,j,a,s,d,j,k]]
As string:
Input: "asdljasdjk\nlkawdasuhq\nasjdhajksd"
Output: "asdljasdjk\nRkaOdasPhR\nOPOPEajEPO\nPEPER REP\nERERO ORE\nROROh POR\nOPOP EPq\nPEPE ROd\nERER OR \nRsRO PO \nO jP EP \nl w RE \na d Os \n P \n E \n R \n O \n u \n k "
As array-matrix:
Input: [[a,s,d,l,j,a,s,d,j,k],[l,k,a,w,d,a,s,u,h,q],[a,s,j,d,h,a,j,k,s,d]]
Output: [[a,s,d,l,j,a,s,d,j,k],[R,k,a,O,d,a,s,P,h,R],[O,P,O,P,E,a,j,E,P,O],[P,E,P,E,R, , ,R,E,P],[E,R,E,R,O, , ,O,R,E],[R,O,R,O,h, , ,P,O,R],[O,P,O,P, , , ,E,P,q],[P,E,P,E, , , ,R,O,d],[E,R,E,R, , , ,O,R, ],[R,s,R,O, , , ,P,O, ],[O, ,j,P, , , ,E,P, ],[l, , ,w, , , ,R,E, ],[a, , ,d, , , ,O,s, ],[ , , , , , , ,P, , ],[ , , , , , , ,E, , ],[ , , , , , , ,R, , ],[ , , , , , , ,O, , ],[ , , , , , , ,u, , ],[ , , , , , , ,k, , ]]
As string:
Input: "re\nop\npo\ner"
Output: "re\noR\npO\neP\n E\n R\n O\n P\n E\n R\n O\n p\n o\n P\n E\n r"
As array-matrix:
Input: [[r,e],[o,p],[p,o],[e,r]]
Output: [[r,e],[o,R],[p,O],[e,P],[ ,E],[ ,R],[ ,O],[ ,P],[ ,E],[ ,R],[ ,O],[ ,p],[ ,o],[ ,P],[ ,E],[ ,r]]
hope
zamiast tego mogę to naprawić ? Nadzieja jest silniejsza niż lina. (To kiepska próba humoru, a nie prawdziwe pytanie)tape
Wyzwanie jest o wiele łatwiejsze (imho). I tak, możesz wypisać tablicę kolumn.Odpowiedzi:
Galaretka , 21 bajtów
Wypróbuj online!
Wyjaśnienie
-1 bajt dzięki Mr. Xcoder
-2 bajty dzięki Erik the Outgolfer
źródło
rope
each
-auto-każdy rzeczy: P05AB1E ,
383725 bajtówZapisano 10 bajtów z sugestiami z Magic Octopus Urn i innym bajtowym formatem wyjściowym.
Wyświetla listę ciągów znaków.
Śliczne odciski stopki.
Wypróbuj online!
Wyjaśnienie
źródło
Tape
zaczęliśmy nad każdym razem trzeba go wstawić,aTAdTAg
. Teraz z liną kontynuujemy od miejsca, w którym przerwaliśmy na linie, więcaROdPEg
.pop a,b,c | push c[b..a]
dealio typu:?Python 2 ,
197194 bajtówWypróbuj online!
źródło
Ruby , 119 bajtów
Wypróbuj online!
Tak, jest to o wiele trudniejsze niż wyzwanie „TAPE”. Próbowałem rozwinąć swoje rozwiązanie tego zadania, ale ma to kilka dodatkowych zwrotów.
Pobiera dane wejściowe jako kolumnową tablicę znaków, zwraca tablicę ciągów, również w formacie kolumnowym. Kod w stopce łącza TIO wykonuje przetwarzanie wstępne i końcowe danych we / wy, abyśmy mogli dostarczyć łatwiejszy do zarządzania ciąg, a następnie ładnie wydrukować wynik.
Wyjaśnienie
Kod wykonuje dwa przejścia przez tablicę wejściową.
W pierwszym przejściu stosujemy
reduce
operację, która wypełnia przestrzeń między znakami wymaganą ilością LINY (y.ord-x[-1].ord-1
znaki, jeśli są dodatnie). Musimy również śledzić zastosowaną długość LINY (l
).W przeciwieństwie do przypadku TAPE, nie możemy po prostu użyć
rjust
do wypełnienia, ponieważ zawsze zaczynałby się od znaku R. Zamiast tego pobranie odpowiedniego kawałka długiego łańcucha „ROPEROPE ...” wydaje się lżejsze pod względem liczby bajtów, zwłaszcza, że musimy także aktualizowaćl
w locie.W drugim przejściu justujemy w lewo powstałe ciągi spacjami, aby pasowały do długości najdłuższego z nich. Ponieważ potrzebujemy tutaj pełnych wyników poprzedniej iteracji, pierwsze przejście modyfikuje tablicę w miejscu (stąd
map!
niemap
).źródło
-1 bajty dzięki Kevin Cruijssen
-70 bajtów dzięki Jonathan Frech , wow .......
Python 3 , 203 bajty
Wypróbuj online!
źródło
ord(t)-ord(p)-1
można ponownieord(t)+~ord(p)
zapisać bajt. ;) Oto odpowiednia wskazówka.+=[o]
->+=o,
.p!=' '
jest to również równoważne zp>' '
.Python 3 , 182 bajty
Wypróbuj online!
Funkcja przyjmuje dane wejściowe jako listę (lub iterowalną) ciągów, a także zwraca generator sekwencji ciągów, który jest prawie tak dobry jak lista.
Nie golfił
… Dla lepszej czytelności zagnieżdżonych generatorów.
Wyjaśnienie
Funkcja służy
zip
do transponowania przychodzącej listy linii do generatora kolumn.Najbardziej wewnętrzny generator sprawdza pary sąsiednich postaci i…
… Wycina wymaganą ilość ciągłej LINY z (nieskończonego)
cycle
generatora.Po dużej ilości ciągów łączących generatory funkcja ponownie transponuje listę kolumn z powrotem do generatora lub wierszy i uzupełnia brakujące wpisy
zip_longest
.źródło
Stax , 25 bajtów
Uruchom i debuguj online!
Dane wejściowe i wyjściowe są podawane jako listy rozdzielone spacjami. Dane wejściowe to lista wierszy zgodnie z wymaganiami, dane wyjściowe to lista kolumn, jeśli jest to dozwolone.
Wyjaśnienie
Używa rozpakowanej wersji do wyjaśnienia.
źródło