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]
für den letzten Testfall gedruckt . Könnte es auch drucken[6 3 2 1]
,[1.0 2.0 3.0 6.0]
oder[6.0 3.0 2.0 1.0]
?Antworten:
Pyth, 10 Bytes
Demonstration
Für jede Potenz generiert es die Liste aller Zahlen bis zu der Eingabe, die für diese Potenz verwendet wird, und prüft dann, ob die Eingabe in der Liste enthalten ist.
quelle
Haskell, 38
Ziemlich einfach. Das Listenverständnis findet Werte, unter
b
denen die Eingaben
erscheint[1^b, 2^b, ..., n^b]
. Es reicht aus,b
den Bereich einzusehen[1..n]
.quelle
Python 2, 53
Brute erzwingt alle Basenkombinationen in Exponenten in [0, n-1] und Basen in [1, n].
quelle
Python 3, 56 Bytes
Das ist wirklich ungeschickt. Prüft, ob jede potenzielle
i
Wurzel eine Ganzzahl ergibt, indem sie gerundet, mit der Potenz voni
berechnet und überprüft wird, ob sie der ursprünglichen entspricht.Die direkte Überprüfung, ob die Wurzel eine ganze Zahl ist, ist schwierig, da Gleitkommazahlen Dinge wie ergeben
64**(1/3) == 3.9999999999999996
. Wenn Sie es auf eine Ganzzahl runden, überprüfen Sie, ob die Potenz wieder zum ursprünglichen Wert zurückkehrt. Vielen Dank an ypercube, der dies vorgeschlagen und 1 Byte gespart hat.feersum hat eine kürzere und cleverere lösung . Ihr alle solltet das wirklich gutheißen.
quelle
round(n**(1/i),0)**i==n
?0
der Standardgenauigkeit für Runde, spart dies ein Byte.Pyth,
111012 BytesÜberprüft alle möglichen Kombinationen von Kräften. Sehr langsam.
quelle
CJam, 23 Bytes
Dies funktioniert, indem die Primfaktorisierung von n genommen und der Schnittpunkt der Divisoren aller Exponenten berechnet wird.
Es ist etwas länger als meine andere Lösung , aber ich erwarte, dass es für alle ganzen Zahlen zwischen 2 und 2 63 - 1 funktioniert (und sofort beendet wird) .
Probieren Sie es online im CJam-Interpreter aus .
Wie es funktioniert
quelle
APL, 17 Bytes
Mein erstes APL-Programm; Golfvorschläge werden geschätzt.
quelle
pow(pow(7,3),1./3))
bekomme ich mit6.99999999999999
C oder Python. Dies liegt daran, dass die Genauigkeit bei der Berechnung von 1 / A verloren geht.JavaScript (ES5),
73 Bytes81 Bytes79 Bytes75 BytesÜberprüft, ob die nächste ganzzahlige Potenz der möglichen Wurzel gleich ist
n
.~~(.5+...)
entsprichtMath.round(...)
für Ausdrücke im ganzzahligen Bereich (0 bis 2 ^ 31 - 1).Bearbeiten: Lazy
&&
Logic anstelle vonif
2 Bytes verwendet und Eingabeaufforderung hinzugefügt, da die Frage eine Klarstellung hinzugefügt hat. Wurde früher angenommen, dass Eingaben in gespeichert wurdenn
.Bearbeiten 2: Wurde geändert
~~(.5+...)
,.5+...|0
um zwei Bytes zu sparen, indem Gruppierungen vermieden wurden.Edit 3: Wurde entfernt
var
, um 4 Bytes zu sparen. Im nicht strengen Modus ist dies akzeptabel.quelle
p=Math.pow
in die Eingabeaufforderung drücken und 1 Byte speichernvar
ist erforderlichfor
anstattprompt
..Brachylog , 8 Bytes
Probieren Sie es online!
Nimmt die Eingabe über die Eingangsvariable auf und erzeugt jede Leistung über die Ausgangsvariable in aufsteigender Reihenfolge, anders als bei der alten Lösung,
≥ℕ≜^↙.?∧
die zufällig genau dieselbe Länge hat.Ich habe keine strenge Rechtfertigung für die Behauptung, dass jeder Exponent nicht größer als die Eingabe ist, aber damit das Programm tatsächlich beendet wird, muss es begrenzt werden.
ḋḅlᵛf
ist eine weitaus kürzere (Nicht-Generator-) Lösung für alle gegebenen Testfälle, aber sie schlägt fehl, wenn die Eingabe keine Potenz eines Produkts unterschiedlicher Primzahlen ist. (Denken Sie mal darüber nach, da alle Testfälle Potenzen von Primzahlen sind undḋlf
auch funktionieren ...) Das Beste, was ich mir ausgedacht habe, um die Idee zu retten,ḋḅlᵐḋˢ⊇ᵛ×f
sind 10 Bytes.quelle
Gelee , 6 Bytes
Probieren Sie es online!
quelle
05AB1E , 3 Bytes
Probieren Sie es online!
Port of Unrelated String's Jelly Antwort .
quelle
JavaScript ES7, 66 Bytes
Nutzt das experimentelle Array-Verständnis. Funktioniert nur mit Firefox.
Mögliches Golfen. Ich werde wahrscheinlich versuchen, die Ausdrücke etwas kürzer zu fassen und hoffentlich eine Alternative zu den langen zu finden
Array(n).keys()
Syntax zu finden.Könnte kürzer sein, aber JavaScript hat eine fürchterliche Gleitkomma-Genauigkeit.
quelle
CJam, 20 Bytes
Für die Eingabe n wird log b n für alle b berechnet kleiner oder gleich n und behält die Ergebnisse bei, die ganze Zahlen sind.
Dies sollte für alle ganzen Zahlen zwischen 2 und 9.999 funktionieren . Die Laufzeit beträgt ungefähr O (n) .
Probieren Sie es online in der CJam-Interpreter aus .
Wie es funktioniert
quelle
Rubin, 50
Druckt auf dem Bildschirm.
Rubin, 57
Gibt ein Array zurück.
Im Testprogramm:
Berechnet jede Wurzel und testet sie modulo 1, um festzustellen, ob der Rest kleiner als 1e-8 ist. Aufgrund der eingeschränkten Genauigkeit werden einige gültige Ganzzahlwurzeln mit der Form 0,9999 berechnet, weshalb 1e-9 hinzugefügt werden muss.
Bis zur n-ten Wurzel von n wird berechnet, was totaler Overkill ist, aber der kürzeste Weg schien, eine nicht-unendliche Schleife zu schreiben.
quelle
Stax , 6 Bytes
Führen Sie es aus und debuggen Sie es
Alle Divisoren der gcd von Exponenten in der Primfaktorisierung. Es ist das gleiche wie beim Jelly-Algorithmus.
quelle
DC, 104 Bytes
Die Eingabe wird vom Terminal übernommen, die Ausgabe wird gedruckt und auch auf dem Stapel abgelegt.
Weil dies das? Betreiber, müssen Sie
dc -e "<solution>"
oder verwendendc <file with solution in it>
.Niemand kann meine Antworten sehen, geschweige denn darüber abstimmen, aber es macht mir wirklich Spaß, Probleme in DC zu lösen. Es ist die am wenigsten effiziente Lösung in diesem Thread, aber ich dachte, ich würde es trotzdem posten.
Starter Zeug
Makro, um eine Basis für alle Kräfte zu erhöhen, bis das Ergebnis größer als das Ziel oder gleich dem Ziel ist
Makro zum Speichern eines gültigen Exponentenwerts aus den obigen Exponentenmakros in einem anderen Stapel
Makro, um das obige Makro 2x (Makro c) durch alle Basen von 2 bis zu unserer Zielnummer zu führen
Makro zum Drucken der Werte aus dem f-Stapel
quelle
Ruby , 46 Bytes
Brute-Force-Lösung. Selbsterklärend; zur Eingaben finden Sie alle Zahlen e wo für manche b , be= n .
Probieren Sie es online!
quelle
C # (Visual C # Interactive Compiler) , 93 Byte
Probieren Sie es online!
quelle
Japt , 10 Bytes
Versuch es
quelle