Biorąc pod uwagę 2 dane wejściowe (m = minimalny identyfikator początkowy , n = liczba identyfikatorów ), wygeneruj sekwencyjną listę identyfikatorów, zaczynającą się od> = m, złożoną z cyfr 0–9, gdzie żadna 2 ciągłe liczby nie są takie same, np. 1232 to ok, 1233 nie jest (zawiera 2 '3 obok siebie).
Przykład
dla m = 985, n = 6, poniżej pokazuje, jakie identyfikatory zostaną wygenerowane / pominięte
...
985 - ok, 1st
986 - ok, 2nd
987 - ok, 3rd
# skip 0988 (contains '88')
989 - ok, 4th
# Skip 099x (contains '99')
# Skip 100x (contains '00')
1010 - ok, 5th
# Skip 1011 (contains '11')
1012 - ok, 6th
...
Wynik
Każdy identyfikator powinien być wydrukowany w nowym wierszu, jak w powyższej sekwencji:
985
986
987
989
1010
1012
Zasady
Standardowe zasady gry w golfa, wygrywa najniższa liczba bajtów
code-golf
subsequence
beirtipol
źródło
źródło
Odpowiedzi:
Galaretka , 6 bajtów
Wypróbuj online!
Jak to działa?
źródło
Brachylog ,
1110 bajtówDane wejściowe to lista dwóch liczb. Wypróbuj online!
Wyjaśnienie
Wbudowana
ḅ
pobiera listę lub ciąg znaków"1000220"
i dzieli je na bloki równych sąsiadujących elementów, takich jak["1","000","22","0"]
. W tym programie~
stosuję do niego operator, więc działa odwrotnie: pobiera listę ciągów, sprawdza, czy każdy ciąg składa się z powtórzeń jednego znaku, a sąsiednie ciągi mają różne znaki i konkatenuje listę. Predykat≤
wylicza liczby, zaczynając od pierwszego wejścia w kolejności rosnącej, i sprawdzam na nich warunek, drukując te, które go spełniają, i zatrzymuję się, gdy znajdę wystarczająco dużo.źródło
05AB1E , 9 bajtów
Wypróbuj online!
Eklpanacja
źródło
Java 8, 83 bajty
Wyjaśnienie:
Wypróbuj online.
źródło
PowerShell , 59 bajtów
Wypróbuj online!
Zasadniczo podobny do innych odpowiedzi. Pętle, o ile pozostały nam liczby do wydrukowania (
for(;$n)
), sprawdzają, czy mamy dopasowanie do wyrażenia regularnego z dwucyfrową, a jeśli nie, to umieszcza je w potoku i maleje$n
. Następnie zwiększamy$m
i zapętlamy ponownie. Elementy są pobierane z potoku, a domniemaneWrite-Output
daje nam wyniki rozdzielone znakiem nowej linii za darmo.źródło
R ,
1119271 bajtówWypróbuj online!
Używa
grepl
do wyszukiwania powtarzających się cyfr.źródło
Galaretka , 9 bajtów
Wypróbuj online!
Jeśli nie dotyczy ograniczenia wyjścia,
Y
można je usunąć.źródło
C, 73 bajty
Wypróbuj online!
źródło
Perl 6 , 56 bajtów
Spróbuj
Rozszerzony:
źródło
Retina , 34 bajty
Wypróbuj online! Pobiera
n
im
jako dane wejściowe w osobnych wierszach. Wyjaśnienie:Wyłącz automatyczne wyjście i usuń
n
z bufora roboczego.Powtórz
n
czasy.Wydrukuj wartość
m
na końcu następującej zapętlonej grupy.Pętla, gdy są ciągłe cyfry.
Konwertuj na unary.
Policz liczbę pustych ciągów, która jest o jeden większa niż liczba znaków, dodając w ten sposób 1 i konwertując z powrotem na dziesiętne. To kończy wewnętrzną pętlę.
Po wydrukowaniu
m
dodaj 1 ponownie w ten sam sposób. (Ostatni wiersz nie potrzebuje a,C`
ponieważ jest to domyślny typ etapu dla ostatniego wiersza.) Zewnętrzna pętla jest domyślnie zakończona.Zauważ, że konwersja na unary i powrót do dziesiętnych jest trochę powolna; dla 39 bajtów, wersja bez konwersji:
Wypróbuj online! Objaśnienie:
$.(
oblicza długość reszty podstawienia, dogodnie bez faktycznego jej rozszerzania; ponieważ długość*_
jest domyślnie dopasowaną wartością, a długość_
wynosi oczywiście 1, to tylko zwiększa wartość.źródło
Perl 5.10.0 +
-n
,4039 bajtówWypróbuj online!
-1 bajt dzięki Xcali
Wprowadź w dwóch wierszach, najpierw n, a następnie m. Upewnij się, że nie ma nowej linii po m:
źródło
Perl 5 ,
-ln
33 bajtówWpisz 2 wiersze na STDIN, najpierw identyfikator początkowy, a następnie policz
Wypróbuj online!
źródło
$n.=<>
tak to działa, zwłaszcza z-=
...$n
może być0
tak, że zrobienie ich razem jest złePython 2 ,
8073 bajtów-7 bajtów dzięki Mr. Xcoder
Wypróbuj online!
źródło
Haskell , 70 bajtów
-19 bajtów dzięki nim.
Wypróbuj online!
17 bajtów dedykowanych do rozdzielania znakami nowej linii.
źródło
mapM
iprint
. Wypróbuj online!Stax ,
98 bajtów CP437Wypróbuj online!
Zdarzyło się, że pokrywa się z algorytmem @ Mr.Xcoder w jego odpowiedzi na żelki.
-1 bajt na komentarz @recursive.
Wyjaśnienie
Do wyjaśnienia używa rozpakowanego formatu.
źródło
Haskell ,
949391 bajtów-1 bajtów dzięki Laikoni
-2 bajtów dzięki Zgarb
Wypróbuj online!
Pierwszy golf Haskell.
źródło
group(show a)
może byćgroup$show a
.(<2).length
może byćnull.tail
Pyth , 12 bajtów
Wypróbuj tutaj
źródło
JavaScript (ES6), 50 bajtów
Pobiera dane wejściowe w składni curry
(m)(n)
.Wypróbuj online!
źródło
C # (.NET Core), 91 bajtów
Port odpowiedzi @Steadybox 'C.
Wypróbuj online.
źródło
Perl 5 (
-nl
), 42 bajtyWypróbuj online!
źródło
AWK , 90 bajtów
Wypróbuj online!
To jest o wiele brzydsze, niż się spodziewałem. Odkryłem, że
AWK
ma tylko substytucję wstecznągensub
funkcji występuje co sprawiłoby, że nie jest zbyt wydajny w użyciu dla tej aplikacji.Jest to więc bardzo proste podejście polegające na zwiększaniu licznika ID, dzieleniu licznika na każdy znak, zapętlaniu znaków, aby sprawdzić, czy jakikolwiek znak jest taki sam jak poprzedni znak. Jeśli nie zostaną znalezione powtarzające się znaki, wydrukuj licznik identyfikatorów i zwiększ liczbę wydrukowanych identyfikatorów.
Spróbuję powstrzymać się od złożenia oświadczenia w stylu „
AWK
powinien mieć możliwość wykonywania bardziej niezawodnych wyrażeń regularnych”, ale będzie to trudne.źródło
Narzędzia Bash + GNU, 35
Wypróbuj online .
źródło
Ruby , 47 bajtów
Wypróbuj online!
Jeśli nie podoba ci się cudzysłów, to 50 bajtów
Wypróbuj online!
źródło
Pip , 22 bajty
Wypróbuj online!
Wyjaśnienie
źródło