Napisz najkrótszy program, aby wydrukować nietrywialne moce ≤ 2 ^ 12 w kolejności
potęga nietrywialna oznacza, że podstawa i wykładnik są> 1
Wiodące białe znaki są opcjonalne
Jeśli istnieje wiele rozwiązań, kolejność nie jest ważna, więc
16 = 4^2, 2^4
jest ok
Przykładowe dane wyjściowe:
4 = 2^2
8 = 2^3
9 = 3^2
16 = 2^4, 4^2
25 = 5^2
27 = 3^3
32 = 2^5
36 = 6^2
49 = 7^2
64 = 2^6, 4^3, 8^2
81 = 3^4, 9^2
100 = 10^2
121 = 11^2
125 = 5^3
128 = 2^7
144 = 12^2
169 = 13^2
196 = 14^2
216 = 6^3
225 = 15^2
243 = 3^5
256 = 2^8, 4^4, 16^2
289 = 17^2
324 = 18^2
343 = 7^3
361 = 19^2
400 = 20^2
441 = 21^2
484 = 22^2
512 = 2^9, 8^3
529 = 23^2
576 = 24^2
625 = 5^4, 25^2
676 = 26^2
729 = 3^6, 9^3, 27^2
784 = 28^2
841 = 29^2
900 = 30^2
961 = 31^2
1000 = 10^3
1024 = 2^10, 4^5, 32^2
1089 = 33^2
1156 = 34^2
1225 = 35^2
1296 = 6^4, 36^2
1331 = 11^3
1369 = 37^2
1444 = 38^2
1521 = 39^2
1600 = 40^2
1681 = 41^2
1728 = 12^3
1764 = 42^2
1849 = 43^2
1936 = 44^2
2025 = 45^2
2048 = 2^11
2116 = 46^2
2187 = 3^7
2197 = 13^3
2209 = 47^2
2304 = 48^2
2401 = 7^4, 49^2
2500 = 50^2
2601 = 51^2
2704 = 52^2
2744 = 14^3
2809 = 53^2
2916 = 54^2
3025 = 55^2
3125 = 5^5
3136 = 56^2
3249 = 57^2
3364 = 58^2
3375 = 15^3
3481 = 59^2
3600 = 60^2
3721 = 61^2
3844 = 62^2
3969 = 63^2
4096 = 2^12, 4^6, 8^4, 16^3, 64^2
Odpowiedzi:
Ruby 1.9,
112 11199 znakówWykonanie tego w moim systemie zajmuje około 0,8 sekundy. Szybsze rozwiązanie ma 111 znaków:
źródło
Python, 113
Wykonanie tego zajmuje kilka sekund.
Wersja szybsza (148 znaków), wykorzystująca słownik do unikania najbardziej zewnętrznej pętli, działa w ~ 0,01 sekundy:
źródło
Windows PowerShell, 102
Z pomocą Ventero dla kodu początkowego.
źródło
InteractiveJ,11810198(ostatni niepotrzebny nowy wiersz)
Wciąż dużo kodu do prezentacji ...
Uwaga: w teorii zmianie
63
i63
doy
iy
oszczędza 2 kolejne bajty, ale ta wersja używa ekstremalne ilości pamięci.Edytowane przez randomra.
źródło
'j';'^';' ';', '
zapisywać 3 bajty. (Bash, 138 znaków
Edycje
for
dla awhile
.+=
while
, ponowne użycie jv
w(())
, użytkowania V 4096 (ostatnia wartość)(())
wyrażenia,
:(źródło
PHP, 138 znaków - Wyjście
Nie golfił
źródło
Python, 127 znaków
źródło
Mathematica, 152 bajty
To stało się krępująco długie. Na formatowanie wyjściowe wydaje się około 25 znaków. Rzeczywisty kod jest dość prosty: odfiltruj te liczby, w których wszystkie wykładniki w rozkładzie na czynniki pierwsze są równe. Następnie dla każdego z nich uzyskaj jeden wynik dla każdego dzielnika wykładnika (z wyłączeniem 1, włączając siebie).
źródło
C (589 bajtów)
Nie grałem też w golfa, to podejście nie jest najlepsze, ale jest wystarczająco szybkie, aby uzyskać dokładnie 0 w ideonie .
źródło
OCaml + Baterie,
220206158156 znakówPodpowiedź do najlepiej ocenianych rozwiązań:
(Zakończenia linii znaczącą spacją, aby linie były krótkie). Szybsza, ale dłuższa wersja, która generuje moce zamiast je testować:
źródło
Haskell, 146 znaków
źródło
JavaScript, 160
194
źródło
Pyth, 39 bajtów
Wypróbuj online tutaj .
Jeśli format wyjściowy jest na tyle elastyczny, aby usunąć potrzebę przestrzeni, -5 bajty zastąpić
" = "
z\=
oraz", "
z\,
źródło
Haskell, 131
źródło
JavaScript, 148 znaków
źródło
C 184
Powinny się kompilować (z ostrzeżeniami) z dowolnym kompilatorem C.
źródło
Pyth, 55 znaków
Pierwszy raz używam Pytha, więc prawdopodobnie można go poprawić. To brutalna siła, która sprawdza do 64 ^ 64, a więc jest dość wolna. Możesz zaoszczędzić czas, sprawdzając tylko do 64 ^ 12, ale kosztowałoby to bajt.
źródło
JavaScript (ES6) 134
127Edytuj poprawioną, poprawioną i skróconą edycję 2 Po kilku badaniach zdałem sobie sprawę, że ta odpowiedź była nieprawidłowa z powodów chronologicznych. Pytanie poprzedza
arrow functions
lata.To powiedziawszy, inne odpowiedzi JS są zbyt skomplikowane
źródło
05AB1E , 36 bajtów
Mam wrażenie, że można to nieco poprawić, stosując nieco inne podejście ...
Wypróbuj online.
Wyjaśnienie:
źródło