Mówię o tym pytaniu , spójrz na to, jeśli jesteś trochę zdezorientowany.
Główne zadanie
Twoim zadaniem jest wyprowadzanie skonkatowanych liczb całkowitych w malejącej kolejności, ale zwiększanie maksymalnej liczby całkowitej za każdym razem, gdy trafisz 1
(w tym pytaniu 1 będzie uważana za liczbę pierwszą) . Chociaż nie brzmi to inaczej niż w pierwszym pytaniu, nadchodzi trudna część: wszystkie wyprowadzane liczby mogą być tylko liczbami pierwszymi . Zostaną one połączone razem w jeden ciąg bez spacji i znaków nowej linii. Twój wkład będzie również liczbą pierwszą .
Przykład:
1
21
321
5321
75321
1175321
Valid output:
1213215321753211175321
Wejście
Twój kod może przyjąć tylko jeden wpis: najwyższą liczbę pierwszą do wydrukowania. Dane wejściowe mogą pochodzić z dowolnego miejsca (grafika, STDIN). Masz pewność, że wejście jest liczbą pierwszą.
Wynik
Będziesz musiał podać wynikową liczbę. Możesz uzyskać ten numer, odliczając w dół, policz tylko liczbę, jeśli jest liczbą pierwszą, a następnie połącz wszystkie wyniki razem w jedną liczbę. Ostatni „wiersz” (np. 7, 5, 3, 2, 1
) Musi zostać wydrukowany w całości. Wynik może być dowolny (liczby, ciągi, grafika), o ile jest czytelny. Obowiązuje ten sam wzorzec Regex do sprawdzania przypadków testowych:
^(\D*(\d)+\D*|)$
Jeśli dane wyjściowe nie są zgodne z tym wzorcem, kod jest nieprawidłowy.
Zasady
- Dane wejściowe są zapewnione jako pierwsze, nie obejmują obsługi błędów, chyba że chcesz / potrzebujesz.
- Wyjście może być tylko liczbą w pełni połączoną, dlatego nie może być podzielone według niczego, nawet nowych linii.
- Algorytm nie powinien sprawdzać pierwszego wystąpienia
N
(na przykład17
in1175321
), ale raczej pierwszego wystąpieniaN
jako rzeczywistej liczby. - Twój wkład jest pewny, że jest pozytywny, nie dodawaj obsługi, chyba że chcesz / potrzebujesz.
Przypadki testowe
Input: -2, 0
Output: Any, or none (number isn't positive)
Input: 9
Output: Any, or none (number isn't prime)
Input: 1
Output: 1
Input: 7
Output: 121321532175321
Input: 23
Output: 1213215321753211175321131175321171311753211917131175321231917131175321
Zwycięzca
To jest golf golfowy , więc autor kodu o najmniejszej długości w bajtach wygrywa!
1
jest to liczba pierwsza z definicji.1
bezpośrednio sprzeczne ze specyfikacją, która „ zapewnia ”, że liczba wejściowa będzie liczbą pierwszą. 2. Specyfikacja wyjściowa wydaje się zawierać wiele sprzeczności i dwuznaczności. „ Ostatni wiersz„ wiersza ”(np. 7, 5, 3, 2, 1) musi być wydrukowany w całości ” - więc inni nie? „ Stosuje się ten sam wzorzec Regex do sprawdzania przypadków testowych ”, ale „ Dane wyjściowe mogą być tylko połączonymi liczbami, a zatem nie mogą być podzielone na nic ”, jest sprzeczne z tym wyrażeniem regularnym. Ale wyrażenie regularne i tak jest wyraźnie niejasne, ponieważ pozwala na pusty ciąg i nie ma danych wejściowych, które mogłyby to dać.Odpowiedzi:
Galaretka , 9 bajtów
Wypróbuj online!
Jak to działa
źródło
V
na liście.)Przetwarzanie, 161 bajtów
Jedna funkcja sprawdza pierwotność, druga drukuje. Nazwij to
t(7)
Nie golfił
Pierwsza funkcja sprawdza pierwotność. Zwraca
int
zamiast zamiast,boolean
ponieważ w ten sposób zapisywanych jest więcej bajtów. (int
zamiastboolean
,0
zamiastfalse
,1
zamiasttrue
)Druga funkcja drukuje ciąg. Powtarza każdą liczbę, jeśli nie jest liczbą pierwszą, przejdź do następnej iteracji. Jeśli jest liczbą pierwszą, kontynuuje drukowanie w kolejnej
for
pętli. Ponownie, jeśli liczba jest liczbą pierwszą, wówczas drukujemy ją, w przeciwnym razie nie.źródło
Galaretka , 12 bajtów
Wypróbuj online!
Gdyby nie było
1
wcale, mój kod byłby po prostuÆRÆRUVV
dla 7 bajtów.Ulepszone wyjaśnienie:
Irlandczyk (zwany Dennis?) Jakoś obezwładnił mnie lol.
źródło
05AB1E , 19 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
DpÏ
oświadczeniem. Dobra robota!Brachylog , 17 bajtów
Wypróbuj online!
Wydaje się, że nie może być krótszy ...
Wyjaśnienie
źródło
GameMaker Language, 169 bajtów
Główna funkcja (68 bajtów)
Funkcja p (46 bajtów)
Funkcja q (55 bajtów)
źródło
MATL , 15 bajtów
Wypróbuj online!
źródło
Perl 6 , 41 bajtów
( Wypróbuj online. )
Wyjaśnienie:
1, |grep(*.is-prime, 2..$_)
: Sekwencja 1 i liczb pierwszych ...(1 2 3 5)
[,] ...
: Zmniejsz („złóż”) nad przecinkiem ...(1 2 3 5)
[\,] ...
: Z wynikami pośrednimi ( zmniejszenie trójkątne ) ...((1) (1 2) (1 2 3) (1 2 3 5))
[\R,] ...
: Zastosuj odwracającego metaoperatora do przecinku ...((1) (2 1) (3 2 1) (5 3 2 1))
[~] flat ...
: Usuń zagnieżdżanie listy i złóż operator konkatty łańcuchowej ...1213215321
(Opiera się to na mojej odpowiedzi na poprzednie wyzwanie ).
źródło
Mathematica, 61 bajtów
Funkcja bez nazwy, przyjmująca argument liczby całkowitej i zwracająca ciąg znaków. (Jeśli dane wejściowe nie są liczbą pierwszą, po prostu „zaokrągla je” do najbliższej liczby pierwszej; jeśli dane wejściowe nie są dodatnie, udaje, że to 1.)
Ta implementacja wykorzystuje paskudną sztuczkę z odpowiedzi Martina Endera na podobne poprzednie wyzwanie (kto mówi, że ten stary pies nie może nauczyć się nowych sztuczek?): Nadużywanie w
<>
celu spłaszczenia zagnieżdżonej listy liczb całkowitych.Lista zagnieżdżona, o której mowa, zaczyna się od wygenerowania podobnej listy zagnieżdżonej jak w tej odpowiedzi, o odpowiedniej długości (podanej przez
PrimePi@#
liczbę liczb pierwszych aż do wejścia); następniePrime
jest stosowany do każdego elementu. Na przykład dla danych wejściowych,5
które są trzecią liczbą pierwszą, kodRange[Range@PrimePi@#,0,-1]
daje{{1,0},{2,1,0},{3,2,1,0}}
, a zastosowaniePrime
do każdego elementu daje,{{2,Prime[0]},{3,2,Prime[0]},{5,3,2,Prime[0]}}
ponieważ pierwsza, druga i trzecia liczba pierwsza to odpowiednio 2, 3 i 5. Jestem dumny, że udało mi się dodać jeszcze więcej błędów do podejścia Martina Endera - Mathematica narzeka za każdym razem, gdy piszePrime[0]
.Prime[0]
nie jest rzeczą, ale jest w porządku:/.Prime@0->1
zamienia je wszystkie w1
s. Chcemy również1
z przodu, więc zastępujemy odpowiedź""
Martina Endera po prostu1
, co faktycznie oszczędza bajt.źródło
PHP, 72 bajty
Uruchom dowcip
-r
awaria
źródło
Pyth - 12 bajtów
Pakiet testowy .
źródło