Co to jest Prime Square?
Prime Square to kwadrat, w którym wszystkie cztery krawędzie mają różne liczby pierwsze.
Ale które?
A jak je konstruujemy?
Oto przykład 4x4 Prime Square
1009
0 0
3 0
1021
Najpierw zaczynamy od lewego górnego rogu. Pracujemy zgodnie z ruchem wskazówek zegara .
Wybieramy najmniejszą liczbę pierwszą zawierającą 4
cyfry, czyli 1009 .
Następnie potrzebujemy najmniejszej liczby pierwszej mającej 4
cyfry, która zaczyna się od a 9
. To jest 9001
Trzecia (4-cyfrowa) liczba pierwsza musi mieć 1
ostatnią cyfrę (ponieważ 9001 kończy się na 1
),
a także być najmniejszą 4-cyfrową liczbą pierwszą z tą właściwością, która nie była wcześniej używana jako zbocze .
Ta liczba pierwsza to 1021
Czwarta liczba pierwsza musi zawierać 4
cyfry, zaczyna się od 1
(ponieważ 1009 zaczyna się od a 1
) i kończy się na 1
(ponieważ 1021 zaczyna się od a 1
)
Najmniejsza 4-cyfrowa liczba pierwsza z tą właściwością, która nie była wcześniej używana jako krawędź, to 1031
Twoje zadanie
Otrzymasz liczbę całkowitą n
od 3 to 100
Ta liczba będzie wymiarami n x n
kwadratu
Następnie musisz wypisać ten kwadrat dokładnie w postaci następujących przypadków testowych
Przypadki testowe
n=3
Output
101
3 0
113
n=5
Output
10007
0 0
0 0
9 0
10061
n=7
Output
1000003
0 0
0 0
0 0
0 0
8 1
1000037
n=10
Output
1000000007
0 0
0 0
0 0
0 0
0 0
0 0
1 0
8 0
1000000021
n=20
Output
10000000000000000051
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
9 8
10000000000000000097
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Możesz wydrukować go do STDOUT lub zwrócić jako wynik funkcji.
- Dopuszczalny jest pełny program lub funkcja.
- Dopuszczalna jest dowolna ilość obcych białych znaków, pod warunkiem, że liczby odpowiednio się wyrównają
- 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).
EDYCJA
Jest to możliwe dla wszystkich n
Oto liczby pierwszen=100
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000289
9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000711
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002191
A dla tych z was, którzy nie sądzicie, że jest to możliwe tutaj, WSZYSTKIE przypadki testowe
n
: P? To nie problem z wyzwaniem, po prostu ciekawy.n
: dlan
= 1 nie możemy spełnić ograniczenia, że cztery krawędzie są różnymi liczbami pierwszymi, podczas gdy dlan
= 2 jesteśmy zmuszeni wybrać 11,13,23, w którym momencie końcowa krawędź jest 12, który jest złożony. Nie mam dowodu na to, że jest to możliwe dla wszystkichn
> 2, ale zszokowałoby mnie nauczenie się inaczej: nieoficjalnie, im więcej cyfr, tym więcej „pokoju wahadłowego”, aby spełnić ograniczenia.n
istnieją co najmniej dwie liczby pierwszen
zaczynające się od 1 i kończące się każdą z tych cyfr (stąd możemy wybrać dolną krawędź) i są co najmniej trzy liczby pierwsze zaczynające się od 1 i kończące się na 1 (stąd możemy wybrać Lewa krawędź).Odpowiedzi:
05AB1E ,
646356534846 bajtów-1 bajtów dzięki @ Mr.Xcoder
-5 bajtów dzięki @Grimy .
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (rozdział Jak kompresować duże liczby całkowite? ), Aby zrozumieć, dlaczego tak
Ž9¦
jest2460
. I zapoznaj się z moją wskazówką 05AB1E, aby zrozumieć, jak kwadrat jest generowany przyΛ
wbudowanym kanwie.NĀiR}¦
I¯JŽ9¦SΛ
n=4
[1009,9001,1021,1031]
[1009,"001","201","301"]
Λ
I
¯J
"1009001201301"
n=4
Ž9¦S
[2,4,6,0]
[→,↓,←,↑]
źródło
4F°ÅP¯KIù.Δ1sЮθÅ¿Š®θÅ?Šθ)¯gè}©ˆ}ð¯2ô`€R«€¦J«Ž9¦SΛ
49:°ÅPIùć4FÐN1›iR}¦ˆθUKD.ΔÐθsXÅ?‚sXÅ¿ª¯gè]Ið¯J«Ž9¦SΛ
48:°ÅPIùćÐ4FˆθUKD.ΔÐθsXÅ?‚sXÅ¿ª¯gè}ÐNĀiR}¦}I¯JŽ9¦SΛ
ÐθsXÅ?‚sXÅ¿ª
naθyXÅ?yXÅ¿)
. Nie jestem do końca pewien, dlaczego)
działa w zakresie pętli, ponieważ spodziewałbym się, że zawinie również listę pierwszą w jej pierwszej iteracji. Ale nawet bez tego użycieyy
zamiast zamiastÐss
oszczędza 1 bajt. :)05AB1E ,
35333231 bajtów-1 bajt dzięki Kevin Cruijssen
Wypróbuj online!
Wyjaśnienie:
źródło
Θ
atNΘ
. Tylko1
jest truthy w 05AB1E, takif N
iif N == 1
są takie same.Θi
jest to odpowiednik 05AB1Eif (cond == true)
...Θ
nadal może być przydatne, jeśli chcesz przekonwertować wszystko oprócz1
celu0
. Ale w przypadku instrukcji ifi
nie jest to tak naprawdę konieczne, jak w przypadku pseudokodu== true
.JavaScript (ES8),
205 ... 185 177173 bajtówWypróbuj online!
W jaki sposób?
Krok # 1: obliczenie 4 liczb pierwszych
Krok # 2: formatowanie wyniku
źródło
Galaretka ,
8982 bajtówWypróbuj online!
Zdecydowanie może być bardziej golfowy, ale działa skutecznie dla dużych liczb.
źródło
Galaretka , 59 bajtów
Wypróbuj online!
Krótsza, ale znacznie mniej wydajna odpowiedź Jelly.
źródło
JavaScript, 484 bajty
Ostatnia nienazwana funkcja zwraca grafikę ASCII.
Oryginalny kod
Najlepsza i średnia złożoność czasu: Ω (100 n n) w notacji Big-Omega Knutha (n kroków do odejmowania n cyfr, 10 n odejmowań na sprawdzenie podzielności, 10 n sprawdzenie podzielności dla kontroli pierwszej i Ω (1) wykonane kontrole pierwsze ).
Najgorsza złożoność czasowa: Ω (1000 n n) w notacji Big-Omega Knutha (n kroków do odejmowania n cyfr, 10 n odejmowań na sprawdzenie podzielności, 10 n sprawdzenie podzielności dla kontroli pierwszej i 10 n wykonanych kontroli pierwszych).
Podejrzewam, że
n=100
zajmuje około 10 203 obliczeń.Sidenote: Zweryfikowałem składnię za pomocą UglifyJS 3 i grałem w nią znacznie lepiej niż ja, oszczędzając 47,13% więcej i zarabiając 282 bajty. Jednak postanowiłem nie robić tego, bo czuję, że to oszustwo.
Właśnie usunął ostatnią funkcję, ponieważ nigdy nie są używane. Stało się gorzej, jeśli został przypisany i nie został usunięty, co oznacza dodanie dodatkowego kodu.
źródło