Jest to część wyzwania dotyczącego gliniarzy i rabusiów. Idź tutaj po część gliniarzy.
Na potrzeby tego wyzwania zdefiniujemy białe znaki jako tylko linie (0x0A) i spacje (0x20). Zauważ, że większość języków i smaków wyrażeń regularnych uważa również wiele innych znaków za spacje, zarówno wewnątrz, jak i poza zakresem ASCII, więc możesz nie być w stanie skorzystać z odpowiednich wbudowanych funkcji.
Wyzwanie rabusiów
Odpowiedź policjanta można złamać, przekształcając go w prawidłowy program lub funkcję (w wybranym języku), która wykonuje zadanie usuwania białych znaków z ciągu wejściowego, wstawiając białe znaki do kodu. Na przykład, jeśli otrzymałeś następujące dane wejściowe:
H e l l o,
W o r l d!
Program powinien wyjść
Hello,World!
Po wstawieniu białych znaków liczba bajtów rozwiązania nie może przekraczać liczby bajtów podanej w odpowiedzi policjanta. Nie musisz znaleźć dokładnie tego samego rozwiązania, jakie zamierzał policjant, o ile twoje jest zgodne z powyższymi ograniczeniami.
Jeśli poradzisz sobie z tym, opublikuj odpowiedź z rozwiązaniem, łącząc się z odpowiedzią policjanta, i zostaw komentarz na temat odpowiedzi policjanta z powrotem do twojej.
Złodziej, który łamie najwięcej odpowiedzi gliniarzy, wygrywa. Więzy są zerwane przez sumę rozmiarów odpowiedzi na złamane gliny (na korzyść rabusia, który pęka z dłuższych postów).
Każdą odpowiedź gliniarza można złamać tylko raz i oczywiście nie wolno ci złamać własnej odpowiedzi. Jeśli odpowiedź gliniarza okaże się nieprawidłowa przed lub po pęknięciu, nie jest liczona do wyniku rabusia.
źródło
JavaScript ES6, 199 bajtów autorstwa Arnauld
Uświadomiłem sobie, że podział
"SecretCode"
oznaczał, że szukałem 11 liczb, które zsumowały się (przypuszczałem) 33. Jest to problem dotyczący gwiazd i słupków, w którym liczba spacji to gwiazdy, a litery w"SecretCode"
nich to słupki. Zrobiłem matematykę, aby zobaczyć, ile mignięć było do wypróbowania (1 917 334 783 kombinacji) i zdecydowałem się na brutalną siłę, zajęło to cały dzień.Nie ma chyba lepszy sposób, aby poszły o tym, na przykład zauważyć, że
k
musi być33
i66
dla indeksu odpowiednio 10 i 21, ale jestem leniwy.źródło
$/**/=/[ \n]/;s['sp'+'lit']($)
... och, to brudne.C, 475 bajtów rexroni
Mogę zacząć korzystać z niektórych z tych definicji :)
Po preprocesorze kod wygląda mniej więcej tak:
źródło
#defineabo
wyrzuciło mnie na chwilę. Na początku myślałem, że to musi#define ab o
dodawać dodatkowe;
s, ale to nie działało pod koniec.Rubin, 86 bajtów + 1 flaga = 87 według histokraty
To było naprawdę zabawne, każdy znak w przekazywanym ciągu znaków
eval
jest zastępowany kodem znaku (ord
) XOR^(...)
względem liczby pozostałych spacji w ciągu. Wynikowy kod to:źródło
RprogN, autor: Ataco
To wydaje się załatwić sprawę
źródło
V, 37 bajtów, autor: DJMcMayhem
Materiały niedrukowalne:
TryItOnline
ü
Naprawdę rzucił mnie dla pętli, trzymałem go i spodziewa się zarównoî
jako polecenia.Í üî
in V tłumaczy się na:%s/ \|\n//g
in vim, który globalnie usuwa wszystkie białe znaki.Í
Komenda jest na wiki, aü
iî
to|
in
odpowiednio wysoką ustawionym bitemźródło
C, 140 bajtów przez betseg
(Mam również nadzieję, że robię to dobrze).
źródło
MATL, 22 bajty autorstwa Luisa Mendo
Chociaż nie jestem pewien, dlaczego, wydaje się, że to działa
Będę musiał sprawdzić, czy uda mi się ustalić, co on robi. Doszedłem do wniosku, że po komentarzach trzeba wstawiać wiersze po liniach, a potem wystarczyło, aby spacje były we właściwych miejscach.
źródło
MATL,
2221 bajtów autorstwa Luisa Mendo.Wreszcie ... MickyT złamał go, kiedy pisałem wyjaśnienie, więc jego odpowiedź brzmi „ważna”. Mimo to opublikowałem to, zgodnie z tym postem .
M
iY
są niepotrzebne i są komentowane. Wystarczy dodać 4 białe znaki, a nie 5.Jest to odpowiednik bardziej kompaktowej :
Częściowe wyjaśnienie:
źródło
1e5
wydrukowano100000
albo1e
było to wezwaniereshape
, ale co wtedy5
? (Widzę teraz, że%
jest na końcu linii, więc nie będzie5M
to pięć i anM
. Pomyślałem też, że muszę miećY(
jedną linię. W sumie bardzo fajny samouczek MATL :)Befunge-98, 65 bajtów autorstwa ninjalj
Wypróbuj online!
To była świetna zabawa. Wydedukowałem, że ponieważ istnieje niewiele poleceń zmieniających kierunek i nie ma ich wcale
^<[]?x
, musi on używać zawijania. Następnie napisałem skrypt w języku Python, aby pomóc w uzyskaniu odpowiednich odstępów między nimij
.Kod działa poprzez pobieranie input (
~
) i duplikowanie go dwukrotnie (::
). Następnie odejmuje 10 (':'0
lubord(':') - ord('0')
) i 32 ('[';
lubord('[') - ord(';')
). Następnie drugi wynik jest logicznie zanegowany (1 jeśli było spacją, 0 w przeciwnym razie) i 8 jest wypychane.Teraz pojawia się część, która musiała wymyślić, co pominąć.
1+!
Jest pomijany przez przejściem do następnego wiersza.#
pomija@
. Logicznie zanegowany wynik (0 lub 1) jest mnożony przez 8 i dodawane jest 1.Następnie kod przeskakuje o tyle (tj. 1 lub 9) spacji plus jedno dodatkowe w miarę ruchu IP. Jeśli postać nie jest spacją, kończy się na
!
. Kod znaku minus 10 jest logicznie zanegowany (1, jeśli był znakiem nowej linii, 0 w przeciwnym razie).j
następnie nic nie pomija,,
wywoływana jest funkcja print ( ), a pętla wznawia się po zawinięciu w pionie.Jeśli postać była spacją, dolna linia zapętla się ponownie
32, 22
jako dolna część stosu. Pierwszyj
przeskakuje 705 pól. Następnie linia zapętla się po raz trzeci. Jeśli na stosie pozostały więcej niż dwie 10 (kod tylko je opuszcza), pierwszaj
przeskakuje 100 spacji i pętla się powtarza. W przeciwnym razie pierwszyj
przeskakuje do!
, zero jest negowane, drugij
przeskakuje nad drukiem, a program kontynuuje.Udało mi się zagrać w golfa do 59 bajtów.
źródło
C # 6, 201 bajtów, przez mleko
repl.it demo
trueJoin
nie jest zdefiniowany, więcstring.Concat()
pozostaje tylko .p
jest"\n"
.p[0]^32^10
jest przestrzeń. Byłoby (trochę) trudniejsze, gdyby było top[0]^42
lub inne podobne stałe.źródło
siatka, 43 bajty, autor: Conor O'Brien
Wypróbuj online!
Było to dla mnie trudniejsze niż powinno być, ponieważ byłem zbyt głupi, aby znaleźć dokumentację, i musiałem zgadywać, jak działają niektóre z poleceń. Dlatego niektóre z tych wyjaśnień mogą nie być do końca dokładne, ale takie było moje podstawowe zrozumienie kodu.
źródło
C #, 159 bajtów przez LethalCoder
repl.it
Łańcuch na końcu wiersza 1 to
" \n"
(spacja + nowa linia).źródło
Minkolang v0.15, 88 bajtów Kritixi Lithos
Wyjaśnienie
źródło
C
pominięcia będą mylące, ale mimo to dobra robota!