To jest PPCG Prime
624 cyfry
777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777111111111111111111111111111111111111111111111111111111111111111111111111111111188888888118888888811188888811188888811188111118818811111881881111881881111881188111118818811111881881111111881111111188888888118888888811881111111881118888188111111118811111111881111111881111881188111111118811111111881111881881111881188111111118811111111188888811188888811111111111111111111111111111111111111111111111111111111111111111111111111111111333333333333333333333333333333333333333
Jeśli dzielimy co 39 cyfr, otrzymujemy
777777777777777777777777777777777777777
777777777777777777777777777777777777777
777777777777777777777777777777777777777
777777777777777777777777777777777777777
111111111111111111111111111111111111111
111111111111111111111111111111111111111
188888888118888888811188888811188888811
188111118818811111881881111881881111881
188111118818811111881881111111881111111
188888888118888888811881111111881118888
188111111118811111111881111111881111881
188111111118811111111881111881881111881
188111111118811111111188888811188888811
111111111111111111111111111111111111111
111111111111111111111111111111111111111
333333333333333333333333333333333333333
Twoim zadaniem jest wygenerowanie PPCG-Prime
To jest codegolf. Najkrótszy kod w bajtach wygrywa.
Jeśli wprowadzisz PPCG-Prime w poniższej funkcji Mathematica, otrzymasz ten wynik
ArrayPlot@Partition[IntegerDigits@#,39]&
n
będzie liczbą pierwszą, jest proporcjonalne do1/log(n)
, co zresztą niezbyt małe. Po prostu sprawdź wiele liczb, aż będzie pierwsza.log(n)
chodzi o @ user2027291436.6
.x/logx
GaussaOdpowiedzi:
Galaretka ,
5554524746 bajtówW historii zmian istnieje bardziej skomplikowane podejście, ale ten prosty pokonuje je wszystkie.
Wypróbuj online!
Jak to działa
Jest to literał liczbowy, zakodowany w bazie bijective 250, gdzie cyfry są pobierane ze strony kodowej Jelly. Argument łańcucha (lewy) i wartość zwracana są ustawione na zakodowaną liczbę całkowitą,
n: = 0x21871c77d7d7af6fafafeff0c37f72ff7fbfbdbfdfef5edfeff8e3 .
Podobny dosłownie do powyższego, ale drugi
“
oddziela dwie zakodowane liczby całkowite. Zwracana wartość jest zastępowana zakodowaną tablicą [777711, 113] .D
konwertuje wartość zwracaną na dziesiętną ( [[7, 7, 7, 7, 1, 1], [1, 1, 3]] ), a następniex39
powtarza każdą liczbę całkowitą / cyfrę w wyniku 39 razy. Daje to parę tablic, które zawierają cyfry odpowiednio przed i po 7-znakowym tekście. Nazwijmy tę tablicę A .Najpierw
B
konwertuje (lewy) argument n na binarny. Daje to cyfry tworzące 7-znakowy tekst, przy czym każde 88 zostało zastąpione przez 0 .Następnie
j
dołącza do tablicy A , używając tablicy binarnej jako separatora.Wykonuje się z logicznego OR 88 , zastępując każdy 0 do 88 .
Mamy teraz prawidłowe cyfry, ale w tablicy 7 , 1 , 88 i 3 .
V
niejawnie zamienia tę tablicę w ciąg, a następnie analizuje ją, uzyskując pojedynczą liczbę całkowitą.źródło
Bubblegum , 51 bajtów
Wypróbuj online!
źródło
SOGL V0.12 ,
5251 bajtówwięzi gumy do żucia!
zwróć uwagę, że ta odpowiedź zawiera zakładkę
Wypróbuj tutaj!
Próbuje zapisać bajty, ponownie wykorzystując ten sam ciąg znaków dla obu
P
s.Wyjaśnienie:
Liczby tam są zapisywane od oryginału, zaczynając od lewego dolnego rogu, przechodząc w górę, następnie 1 w prawo i w dół, a następnie w górę, itd.
52-bajtowa wersja z kompresją zwykłą:
Wypróbuj tutaj!
źródło
...‘
te liczby?...‘
?CG
to narzędzie, nie daje żadnego...‘
miejsca w tym narzędziu.Mathematica, 107 bajtów
Wypróbuj online!
źródło
&
na końcu).CJam, ASCII, 61
Wypróbuj online
Dołącz
]s39/N*
do ładnego opakowania.Wyjaśnienie:
źródło
C
519427414396377 bajtówDzięki Tas, Felix Palmen i Lynn.
Dla twojego zainteresowania, oto dłuższa, łatwiejsza do odczytania wersja:
źródło
Java (OpenJDK 8) , 165 bajtów
Wypróbuj online!
Kredyty
źródło
n->{for(int i=0;++i<566;)System.out.print(i<157?7:i>526?3:i<236|i>446||new java.math.BigInteger("vnku5g6l0zenpa1kydel5rxw162k4fk4xapa154o",36).testBit(446-i)?1:88);}
88
, dzięki!Siatkówka , 129 bajtów
Wypróbuj online!
źródło
Partia,
364335333 bajtówźródło
echo|
nacd|
(1,1,156) do
skrócić do(1,1,156)do
JavaScript (ES6),
187181 bajtów-6 bajtów dzięki @JustinMariner
Super proste podejście; prawdopodobnie można by jeszcze trochę zagrać w golfa.
Wyjaśnienie
Przykładowy fragment kodu (z pewnym kodem pomocniczym do dodania podziału wiersza na wyjściu)
Pokaż fragment kodu
źródło
r
, jakr=s=>s[0].repeat(39)
i wtedy wymienića
,b
orazk
zr`7`
itp Wypróbuj online! .C (gcc) ,
269267 bajtówfunkcja wykorzystuje prosty RLE.
Wypróbuj online!
źródło
L"'OP\x9c"
zamiastx
C (gcc) , 224 bajty
Wypróbuj online!
Zawiera pewne niedrukowalne, literał ciąg jest
"ww\x11dfFdfFDfFDfFDFDDFFDDFFDddDDFdDDddDDddDDDdDDDDffDffDFDDDFDfdDDDDFDDDdDDDdDDFdDDDDFDDDdDDFFDdDFDDDdDDDDdfDdfD\x11\x03"
.źródło
Galaretka , 86 bajtów
Wypróbuj online!
-12 bajtów dzięki user202729
źródło
“
puszkaseparates a list of strings inside a string literal
)Python 2 ,
309158155136135 135 bajtówWypróbuj online!
Python 2 , 137 bajtów
Wypróbuj online!
źródło
Galaretka , 85 bajtów
Wypróbuj online!
Oparte na podejściu Dennisa do wyzwania Trinity Hall, minus symetria, plus
7
s wiodące i końcowe3
s.źródło
PowerShell , 164 bajty
Wypróbuj online!
Mnożenie, łączenie i zamienianie ciągów. PowerShell nie ma bazy 36 lub podobnej, więc opcje kompresji dużej liczby są ograniczone. Może być lepszy sposób na „skompresowanie” środkowej części - wciąż to sprawdzam.
źródło
Wolfram Language (Mathematica) , 89 (17 + 71 + 1) bajtów
Najpierw wyeksportuj numer do pliku GZIP. Plik o nazwie „o” bez rozszerzenia będzie miał dokładnie 71 bajtów, co wlicza się do sumy całkowitej. Domyślnie trafi do twojego
$TemporaryDirectory
. Pominięcie cyfr dla czytelności.Następnie
zrekonstruuje liczbę. Nazwa pliku to jeden bajt, stąd pochodzi +1.
Wypróbuj online!
źródło
Rubin, 109 bajtów
Skrypt wywołuje
Zlib.inflate
dekompresję numeru. Potrzebuje co najmniej Ruby 1.9.3. Zawiera niezadrukowane bajty, więc nie mogę go tutaj wkleić.Wklejam wynik
vis prime-inflate.rb
:Jeśli masz unvis (1), uruchom,
unvis prime-inflate.vis > prime-inflate.rb
aby przywrócić 109-bajtowy skrypt. Lub możesz zdekodować Base64 poniżej za pomocąruby -e 'print *STDIN.read.unpack(?m)' < prime-inflate.b64 > prime-inflate.rb
.Dzwonię,
Zlib.inflate
więc nie muszę projektować i wykorzystywać własnego algorytmu dekompresyjnego. UżywamDATA
z,__END__
ponieważ skompresowany ciąg nie jest prawidłowy UTF-8. Kod Ruby musi być poprawny ASCII (w Ruby 1.9.x) lub UTF-8 (z Ruby 2.0) lub mieć magiczny komentarz,#coding:binary
aby zmienić kodowanie, ale Ruby nie sprawdza kodowania później__END__
.źródło
Python 2 , 112 bajtów
Wypróbuj online!
źródło
Kod maszynowy 6502 (C64),
142122 bajtyDemo online
Stosowanie:
sys49152
Wyjaśnienie
To również używa długości
1
i8
sekwencji w środkowej części; ponieważ wszystkie mają mniej niż 16, dwa z nich są kodowane na bajt.Skomentowany wykaz deasemblacji:
źródło
C (gcc) ,
188187185 bajtów-1 dzięki JonathanFrech.
-2 dzięki pułapkowi cat.
Wypróbuj online!
źródło
Python 2 ,
244128120 bajtów-8 bajtów dzięki @JonathanFrech
Wypróbuj online!
źródło
Befunge-93 , 500 bajtów
Wypróbuj online!
źródło