Wyzwanie
W tym wyzwaniu musisz wykonać dwa różne (ale powiązane) zadania w zależności od kolejności wprowadzania danych.
Twój program otrzyma ciąg s
i liczbę całkowitą n
jako dane wejściowe i będzie
- podzielony
s
na kawałki długości,n
jeśli będzies
pierwszy. Ostatni element będzie krótszy, jeśli to konieczne. - podzielony
s
nan
kawałki o równej długości, jeśli będzien
pierwszy. Jeślilen(s)
nie, wielokrotnośćn
pierwszychlen(s) mod n
elementów będzie o jeden dłuższa.
Możesz wziąć tylko te 2 dane wejściowe. s
nigdy nie będzie zawierać tylko cyfr.
Notatki
- Możesz użyć odwrotnego mapowania. Zwróć uwagę na to w swojej odpowiedzi, jeśli to zrobisz.
s
będzie zawierać tylko drukowalne znaki ASCII (bez nowych linii).- Nie możesz używać żadnych wbudowanych rozwiązań, które bezpośrednio rozwiązują oba te zadania. Wszystkie inne wbudowane funkcje są dozwolone.
- Musisz wziąć oba argumenty z tego samego źródła.
- Możesz wziąć argumenty w uporządkowanej liście lub w innym formacie, który wyraźnie wskazuje ich kolejność, o ile jest to jednoznaczne.
- Możesz wziąć dane wejściowe jako jeden ciąg / strumień i użyć znaku, który nie jest prawidłowym wejściem (jak nullbyte), aby je rozdzielić.
n
będzie zawsze równa lub mniejsza niż długośćs
i większa niż zero.- Możesz wyprowadzić wynikową listę w dowolnym formacie rezonansowym, o ile wyraźnie wskazuje ona poszczególne elementy i ich kolejność.
Przykład
Dane wejściowe: programming, 3
ostatni element zawiera tylko 2 znaki, ponieważ 11 nie jest podzielne przez 3. Dane
wyjściowe: ["pro", "gra", "mmi", "ng"]
Dane wejściowe: 3, programming
11 nie jest wielokrotnością liczby 3, więc pierwsze 2 elementy będą o jeden dłuższe: Dane
wyjściowe: ["prog", "ramm", "ing"]
Zasady
- Dozwolona funkcja lub pełny program.
- Domyślne reguły wejścia / wyjścia.
- Obowiązują standardowe luki .
- To jest golf golfowy , więc wygrywa najmniej bajtów. Tiebreaker to wcześniejsze zgłoszenie.
Przypadki testowe
Przypadki testowe zostały wygenerowane za pomocą tego programu Pyth (używa wbudowanych, więc nie ma poprawnej odpowiedzi). Dzięki @FryAmTheEggman za udostępnienie podstawowej wersji tego!
3, helloworld -> ['hell', 'owo', 'rld'] helloworld, 3 -> ['hel', 'low', 'orl', 'd'] 1, programowanie -> [„programowanie”] programowanie, 1 -> ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g'] 8, programowanie -> ['pr', 'og', 'ra', 'm', 'm', 'i', 'n', 'g'] programowanie, 8 -> ['programm', 'ing'] 9, kod golfa -> [„c”, „o”, „d”, „e”, „”, „g”, „o”, „l”, „f”] code golf, 9 -> [„golf golf”] 4, 133tspeak -> [„133”, „ts”, „pe”, „ak”] 133tspeak, 4 -> [„133t”, „spea”, „k”]
Happy Coding!
Odpowiedzi:
MATL,
462621272942 bajtówWypróbuj online! (Zaktualizowano nieznacznie, aby działał z najnowszą wersją języka)
Wyjaśnienie
źródło
e
jest wbudowane zabronione?XUZN?...
przezU?...
i zamienić dwaif
oddziały. Ponadto nie potrzebujesz3$
e
nie rozwiązuje bezpośrednio problemu, więc nie uważam, że jest to zabronione, nie.JavaScript (ES6), 132 bajty
Jest to prawdopodobnie beznadziejnie przeprojektowane.
źródło
JavaScript (Firefox),
8887 bajtówNazwij to jak
(...)("programming")(3)
za pomocą przeglądarki Firefox 30+.źródło
Ruby, 119 bajtów
I zajmę pierwsze miejsce po 2 bajtach ...
źródło
x.scan(/.{,#{y}})
równie dobrze działa w przypadku podziału łańcuchów w pierwszym przypadku. Czy to się liczy jako wbudowane?AWK,
121130128122 bajtówJedynym problemem jest to, czy pierwszy wpis jest łańcuchem rozpoczynającym się od wartości liczbowej. Spowodowałoby to,
AWK
że ciąg byłby widoczny jako ten numer, a drugi wpis jako ciąg.OK ... naprawiono problem numeryczny, ale dodano 9 bajtów :(.
Przerobiono nieco, aby zaoszczędzić kilka bajtów.
Niemal z powrotem do pierwotnej długości. :)
źródło
Haskell, 131 bajtów
Przykład użycia:
Jak to działa: główna praca jest wykonywana przez funkcję pomocnika,
q
która pobiera parę liczb(d,m)
i ciąg znakóws
. Najpierw buduje listęm
razy,d+1
a następnie nieskończoną liczbęd
(np.(1,3)
->[2,2,2,1,1,1,1,1,...]
). Następnie używasplitPlaces
do podzielenias
na kawałki długości podane przez listę.splitPlaces
zatrzymuje się, jeślis
zabraknie elementów, więc nieskończona lista jest w porządku.Główną funkcją
#
kontroli, który parametr jest liczbąn
/ stringstr
i połączeniaq
z albo(div (length str) n, mod (length str) n)
lub(n, 0)
Plusstr
.źródło
C # (LINQPAD) - 335 bajtów
Część odczytu wejścia zajęła trochę miejsca. Zwycięzca najdłuższej odpowiedzi.
Zastosowanie nr 1:
Zastosowanie nr 2:
źródło
Pyth, 181 bajtów
Udawajmy, że najdłuższy kod w bajtach wygrywa \ o /
Wypróbuj tutaj! (Tłumacz online wydaje się mieć błąd, wyświetla dane wejściowe, podczas gdy nie powinien)
Oto dane wyjściowe z terminala:
Poważnie, jestem otwarty na nowe podejście. Jestem nowy w Pythonie, więc prawdopodobnie przegapiłem kilka skrótów.
To znaczy, myślę, że moja odpowiedź jest rozpaczliwa, ponieważ jest dłuższa niż odpowiedź w javascript ...
źródło
testcases
. Przypadki testowe są generowane przez Pyth. Rozwiązaniem jest.xcsJKcJsK
, gdzieJ
iK
są dwa argumenty.PHP, 114 bajtów
(Wymienić
+@$p
zis_numeric($p)
do poprawki).(Wstaw
~
do wydruku ASCII,a&
dla dowolnego ASCII przed$t;
naprawą.)-nr
lub wypróbuj online .źródło
PowerShell ,
122118 bajtówWypróbuj online!
Mniej golfa:
źródło