Wyzwanie
Mark jest studentem, który otrzymuje swoje N
oceny w sposób połączony w jednym pojedynczym wierszu.
Wyzwaniem jest, aby oddzielić jego ślady, wiedząc, że każdy znak może być tylko 0
lub 1
lub 2
lub 3
lub 4
lub 5
lub 6
lub 7
lub 8
lub 9
lub 10
.
Wkład
N
liczba naturalna i jedna linia.
Wydajność
Zestaw liczb naturalnych.
Przykład
N, One line------------------> Set of marks
3, '843'---------------------> [8, 4, 3]
1, '0'-----------------------> [0]
2, '1010'--------------------> [10,10]
3, '1010'--------------------> [1,0,10] or [10,1,0]
4, '1010'--------------------> [1,0,1,0]
9, '23104441070'-------------> [2, 3, 10, 4, 4, 4, 10, 7, 0]
12,'499102102121103'---------> [4, 9, 9, 10, 2, 10, 2, 1, 2, 1, 10, 3]
5, '71061'-------------------> [7, 1, 0, 6, 1]
11,'476565010684'------------> [4, 7, 6, 5, 6, 5, 0, 10, 6, 8, 4]
4, '1306'--------------------> [1, 3, 0, 6]
9, '51026221084'-------------> [5, 10, 2, 6, 2, 2, 10, 8, 4]
14,'851089085685524'---------> [8, 5, 10, 8, 9, 0, 8, 5, 6, 8, 5, 5, 2, 4]
11,'110840867780'------------> [1, 10, 8, 4, 0, 8, 6, 7, 7, 8, 0]
9, '4359893510'--------------> [4, 3, 5, 9, 8, 9, 3, 5, 10]
7, '99153710'----------------> [9, 9, 1, 5, 3, 7, 10]
14,'886171092313495'---------> [8, 8, 6, 1, 7, 10, 9, 2, 3, 1, 3, 4, 9, 5]
2, '44'----------------------> [4, 4]
4, '9386'--------------------> [9, 3, 8, 6]
Zasady
- Jeśli możliwych jest kilka wyjść, podaj tylko jedno wyjście.
- Jedyny znak wartości
10
znajduje się z dokładnością do dwóch miejsc po przecinku, a pozostałe są po przecinku. - Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie
- Nie trzeba obsługiwać nieprawidłowych danych wejściowych
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
code-golf
string
array-manipulation
mdahmoune
źródło
źródło
n, 'string'
spl = [item.split('-')[0] for item in text.split('\n')]
Odpowiedzi:
Brachylog ,
2321 bajtów-2 bajty dzięki Fatalize
Wypróbuj online!
Dane wejściowe to para
[Line, N]
.To mój pierwszy program Brachylog, więc prawdopodobnie jest wiele do zrobienia.
Jest bardzo wolny, gdy długość linii> 7.
Wyjaśnienie:
(*)
ịṫ?
sprawdza, czy nie ma zer wiodących. Konwertuje ciąg na liczbę całkowitą, a następnie z powrotem na ciąg i porównuje z ciągiem oryginalnym.źródło
ị
i dla wiodących czeku zerowej:h~c.{ℕ≤10}ᵛ&t~l
. Jest to prawdopodobnie wolniejsze, ponieważ dekonkatacja na liczbach całkowitych musi działać nawet w przypadku nieznanych liczb całkowitych z powodu ograniczeń, co czyni go nieefektywnym.h
it
aby uzyskać pierwszy / ostatni element jest bardziej wydajne niż używanie∋
dla obu (co w większości programów nawet nie będzie działać)).Perl 6 , 25 bajtów
Wypróbuj online!
Anonimowy blok kodu, który pobiera liczbę i ciąg znaków i zwraca jako obiekt dopasowania.
Wyjaśnienie:
źródło
Python 3 , 47 bajtów
Wypróbuj online!
Bierze „jedną linię” jako bajtowanie z surowymi bajtami
\x00 - \x09
. Jeśli to nie do przyjęcia:Python 3 , 56 bajtów
Wypróbuj online!
Trwa „jedna linia” jako testowanie.
źródło
V ,
17, 12 bajtówWypróbuj online!
Byłem zadowolony z 17 bajtów, ale potem 05AB1E przyszło z 13, i nie mogłem pozwolić, by wyzwanie pozostało bez odpowiedzi. :RE
Hexdump:
Alternatywne rozwiązanie:
Niestety, ten zastępuje
10
z1 0
źródło
Rubinowy , 57 bajtów
Wypróbuj online!
Może to okazać się nie podejście golfiest, ale wygląda na to pomysł zabawy tymczasowo zastąpił
10
na hexA
, który nawiasem mówiąc jest również wysoki znak (jeśli weźmiemy pod uwagę Normy AF :))źródło
Haskell , 68 bajtów
Wypróbuj online!
Zachłannie zajmij 10 sekund, o ile pozostanie więcej cyfr niż znaków.
źródło
JavaScript,
5752 bajtówWypróbuj online
źródło
Python 3 ,
71 6859 bajtówo kolejne 9 bajtów dzięki ovs.
Wypróbuj online!
Początkowo próbowałem używać
str.partition()
rekurencyjnie, alereplace
niedługo potem uderzyłem mnie w twarz. Czy ktoś może to poprawić?Ponadto, oto link TIO, którego użyłem, aby przekształcić przypadki testowe w coś bardziej kopiowalnego / wklejalnego
źródło
: [c
i'x' else
i10 for
<number>e
,<letter><number>
,f'
.lambda n,s:[int(c,11)for c in s.replace('10','a',len(s)-n)]
.Haskell , 98 bajtów
Wypróbuj online lub przetestuj wszystko!
Wyjaśnienie
Funkcja
s
wykonuje wszystkie możliwe podziały, na przykład:"1010"
staje się[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
, zwróć uwagę na to, jak najdłuższe podziały kończą się na początku (ponieważ1:0:y
występuje wcześniej10:y
).Mając to na uwadze, możemy wziąć wszystkie te wartości i odfiltrować
y
s, gdziey == take n y
zachowane są również podziały krótsze niż wymagane. Na przykład4
pozostawiamy tę samą listę[[1,0,1,0],[10,1,0],[1,0,10],[10,10]]
.Teraz możemy po prostu pobrać pierwszy element z tej listy, ponieważ dane wejściowe zawsze będą poprawne (np.
5!"1010"
Też dadzą[1,0,1,0]
, ale nie musimy sobie z tym poradzić).Uwaga: jakoś przeliczyłem ...
y==take n y
ma taką samą długość jaklength y==n
: Sźródło
Perl 5
-plF
, 39 bajtówWypróbuj online!
źródło
Czysty , 128 bajtów
Wypróbuj online!
źródło
05AB1E , 13 bajtów
Wypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
JavaScript (węzeł Babel) ,
70 6959 bajtówPobiera dane wejściowe jako
(n)(line)
.Wypróbuj online!
Skomentował
JavaScript (ES6),
6459 bajtówZapisano 5 bajtów dzięki @ guest271314
Pobiera dane wejściowe jako
(n)(line)
.Wypróbuj online!
Skomentował
źródło
s.match()
zwraca tablicę ciągów, ale a"10"
może być podzielone na[1,0]
(2 liczby całkowite) w funkcji wywołania zwrotnegoflatMap()
.eval(`[${s}]`.replace('1,0',10))
Java (OpenJDK 8) , 78 bajtów
Przyjemny jednowarstwowy przy użyciu interfejsu API strumieni.
Wypróbuj online!
Jak to działa
źródło
R , 63 bajty
Chociaż długość łańcucha jest większa niż
n
, zamień 10 kolejnych, na które sięgasz,":"
(znak ASCII po 9). Następnie podziel na liczby, biorąc wartość ASCII każdego znaku w ciągu.Wypróbuj online!
źródło
Czerwony , 91 bajtów
Wypróbuj online!
źródło
Galaretka , 18 bajtów
Wypróbuj online!
źródło