function getURL(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function getAnswers(){$.ajax({url:getURL(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),useData(answers)}})}function getOwnerName(e){return e.owner.display_name}function useData(e){var s=[];e.forEach(function(e){var a=e.body.replace(/<s>.*<\/s>/,"").replace(/<strike>.*<\/strike>/,"");console.log(a),VALID_HEAD.test(a)&&s.push({user:getOwnerName(e),language:a.match(VALID_HEAD)[1],score:+a.match(VALID_HEAD)[2],link:e.share_link})}),s.sort(function(e,s){var a=e.score,r=s.score;return a-r}),s.forEach(function(e,s){var a=$("#score-template").html();a=a.replace("{{RANK}}",s+1+"").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SCORE}}",e.score),a=$(a),$("#scores").append(a)})}var QUESTION_ID=58047,ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",answers=[],answer_ids,answers_hash,answer_page=1;getAnswers();var VALID_HEAD=/<h\d>([^\n,]*)[, ]*(\d+).*<\/h\d>/;
body{text-align:left!important}table thead{font-weight:700}table td{padding:10px 0 0 30px}#scores-cont{padding:10px;width:600px}#scores tr td:first-of-type{padding-left:0}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"><div id="scores-cont"><h2>Scores</h2><table class="score-table"><thead> <tr><td></td><td>User</td><td>Language</td><td>Score</td></tr></thead> <tbody id="scores"></tbody></table></div><table style="display: none"> <tbody id="score-template"><tr><td>{{RANK}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SCORE}}</td></tr></tbody></table>
[1 2 3 6]
dla ostatniego przypadku testowego. Może również wydrukować[6 3 2 1]
,[1.0 2.0 3.0 6.0]
lub[6.0 3.0 2.0 1.0]
?Odpowiedzi:
Pyth, 10 bajtów
Demonstracja
Dla każdej mocy generuje listę wszystkich liczb aż do wejścia pobranego do tej mocy, a następnie sprawdza, czy dane wejście znajduje się na liście.
źródło
Haskell, 38
Całkiem proste. Zrozumienie listy znajduje wartości,
b
dla których dane wejściowen
pojawiają się między[1^b, 2^b, ..., n^b]
. Wystarczy sprawdzićb
w zakresie[1..n]
.źródło
Python 2, 53
Brute wymusza wszystkie kombinacje zasad w wykładnikach w [0, n-1] i zasad w [1, n].
źródło
Python 3, 56 bajtów
To jest naprawdę niezdarne. Sprawdza, czy każdy potencjalny
i
-ty pierwiastek podaje liczbę całkowitą, zaokrąglając go, biorąc moci
i sprawdzając, czy jest równy oryginałowi.Bezpośrednie sprawdzanie, czy pierwiastek jest liczbą całkowitą, jest trudne, ponieważ zmiennoprzecinkowe dają takie rzeczy
64**(1/3) == 3.9999999999999996
. Zaokrąglając go do liczby całkowitej, sprawdźmy, czy przywrócenie mocy wraca do pierwotnej wartości. Dzięki ypercube za zasugerowanie tego, oszczędzając 1 bajt.feersum ma krótsze i mądrzejsze rozwiązanie . Wszyscy powinniście naprawdę to poprzeć.
źródło
round(n**(1/i),0)**i==n
?0
domyślną dokładnością dla rundy, oszczędza bajt.Pyth,
111012 bajtówSprawdza wszystkie możliwe kombinacje mocy. Bardzo wolno.
źródło
CJam, 23 bajty
Działa to poprzez przyjęcie pierwszej faktoryzacji n i obliczenie przecięcia dzielników wszystkich wykładników.
Jest to nieco dłużej niż innym moim rozwiązanie , ale można oczekiwać, że do pracy (i zakończyć natychmiast) dla wszystkich liczb całkowitych między 2 a 2 63 - 1 .
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
APL, 17 bajtów
Mój pierwszy program APL; sugestie dotyczące gry w golfa są mile widziane.
źródło
pow(pow(7,3),1./3))
gdy dostaję6.99999999999999
C lub Python. Wynika to z utraty dokładności przy obliczaniu 1 / A.JavaScript (ES5),
73 bajty81 bajtów79 bajtów75 bajtówSprawdza, czy najbliższa całkowita liczba możliwych możliwych pierwiastków jest równa
n
.~~(.5+...)
jest równoważneMath.round(...)
wyrażeniom z zakresu liczb całkowitych (od 0 do 2 ^ 31 - 1).Edycja: Użyto leniwej
&&
logiki zamiastif
golić 2 bajty i dodano monit o wprowadzenie, ponieważ pytanie dodało wyjaśnienie. Poprzednio zakładano, że dane wejściowe zostały zapisane wn
.Edycja 2: Zmieniono
~~(.5+...)
na,.5+...|0
aby zapisać dwa bajty, unikając grupowania.Edycja 3: Usunięto,
var
aby zapisać 4 bajty. W trybie nieściągalnym jest to dopuszczalne.źródło
p=Math.pow
do szybkiego zapisania 1 bajtuvar
jest wymaganafor
zamiastprompt
...Brachylog , 8 bajtów
Wypróbuj online!
Pobiera dane wejściowe przez zmienną wejściową i generuje każdą moc poprzez zmienną wyjściową, w kolejności rosnącej zgodnie z wymaganiami, w przeciwieństwie do starego rozwiązania,
≥ℕ≜^↙.?∧
które akurat ma dokładnie taką samą długość.Nie mam żadnego rygorystycznego uzasadnienia dla twierdzenia, że każdy wykładnik nie jest większy niż dane wejściowe, ale aby program mógł się zakończyć, musi zostać ograniczony.
ḋḅlᵛf
jest rozwiązaniem znacznie krótszym (bez generatora) dla wszystkich podanych przypadków testowych, ale zawodzi, jeśli dane wejściowe nie są potęgą iloczynu różnych liczb pierwszych. (Pomyśl o tym, ponieważ wszystkie przypadki testowe są potęgami liczb pierwszych,ḋlf
działa również ...) Najlepsze, co wymyśliłem, aby uratować ten pomysłḋḅlᵐḋˢ⊇ᵛ×f
, wychodzi na 10 bajtów.źródło
Galaretka , 6 bajtów
Wypróbuj online!
źródło
05AB1E , 3 bajty
Wypróbuj online!
Odpowiedź na galaretkę Portu niepowiązanego sznurka .
źródło
JavaScript ES7, 66 bajtów
Wykorzystuje eksperymentalne tablice. Działa tylko w przeglądarce Firefox.
Możliwy golf. Prawdopodobnie postaram się nieco skrócić wyrażenia i mam nadzieję znaleźć alternatywę dla długiej
Array(n).keys()
składni.Może być krótszy, ale JavaScript ma niesamowicie zmiennoprzecinkową dokładność.
źródło
CJam, 20 bajtów
Dla wejścia n oblicza to log b n dla wszystkich b mniejszych lub równych n i zachowuje wyniki, które są liczbami całkowitymi.
Powinno to działać dla wszystkich liczb całkowitych od 2 do 9 999 . Czas pracy wynosi mniej więcej O (n) .
Wypróbuj online w interpretatorze CJam .
Jak to działa
źródło
Ruby, 50
Drukuje na ekranie.
Ruby, 57 lat
Zwraca tablicę.
W programie testowym:
Oblicza każdy pierwiastek i testuje go modulo 1, aby sprawdzić, czy reszta jest mniejsza niż 1e-8. Z powodu ograniczonej precyzji oblicza się, że niektóre prawidłowe pierwiastki całkowite mają postać 0,9999 .., stąd potrzeba dodania do nich 1e-9.
Oblicza się do n-tego pierwiastka z n, co jest całkowitą nadwyżką, ale wydaje się najkrótszym sposobem na napisanie nieskończonej pętli.
źródło
Stax , 6 bajtów
Uruchom i debuguj
Wszystkie dzielniki gcd wykładników w głównym rozkładzie na czynniki pierwsze. Jest taki sam jak algorytm galaretki.
źródło
DC, 104 bajty
Dane wejściowe są pobierane z terminala, dane wyjściowe są drukowane, a także na stosie.
Ponieważ używa to? operator, musisz użyć
dc -e "<solution>"
lubdc <file with solution in it>
.Nikt nigdy nie widzi moich odpowiedzi, nie mówiąc już o głosowaniu na nie, ale naprawdę lubię rozwiązywać problemy w DC. Jak dotąd jest to najmniej wydajne rozwiązanie w tym wątku, ale pomyślałem, że i tak go opublikuję.
rzeczy początkowe
Makro, aby podnieść bazę do wszystkich mocy, aż wynik będzie większy niż cel lub równy celowi
Makro, aby zapisać poprawną wartość wykładnika, jak znaleziono z powyższych makr wykładnika na innym stosie
Makro, aby uruchomić 2x powyższe makro (makro c) przez wszystkie bazy od 2 do naszej liczby docelowej
Makro, aby wydrukować wartości ze stosu F.
źródło
Rubin , 46 bajtów
Rozwiązanie brutalnej siły. Oczywiste; na wejścien , znajdź wszystkie liczby mi gdzie dla niektórych b , bmi= n .
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 93 bajty
Wypróbuj online!
źródło
Japt , 10 bajtów
Spróbuj
źródło