Wenn Sie eine Zahl n
und eine Obergrenze angeben, l
listen Sie die Zahlen auf, die durch Multiplikation von zwei oder mehr Zahlen erstellt werden können, die nur aus siebenn
oder weniger Längen bestehen , die kleiner als sind l
. A161145 steht kurz vor dieser Herausforderung. Sie werden jedoch NICHT die Werte 7, 77, 777, 7777, 77777 usw. berücksichtigen.
Beispiele
n=anything, l<49
würde ergeben:
[]
n=1, l=49
würde ergeben:
7*7=49
f(1,49)=[49]
n=1, l=343
würde ergeben:
7*7 =49
7*7*7 =343
f(1,343)=[49,343]
n=2,l=6000
würde ergeben:
7*7 =49
7*7*7 =343
7*7*7*7=2401
7*77 =539
7*7*77 =3773
77*77 =5929
f(2,6000)=[49,343,539,2401,3773,5929]
n=3, l=604000
würde ergeben:
[49, 343, 539, 2401, 3773, 5439, 5929, 16807, 26411, 38073, 41503, 59829, 117649, 184877, 266511, 290521, 418803, 456533, 603729]
Etc...
Regeln
- Sie müssen keine Zwischenschritte ausgeben, dies dient der Übersichtlichkeit.
- Die Ausgabe kann als Array oder durch ein beliebiges Zeichen (auch Zeilenvorschub) getrennt erfolgen.
- Die Ausgabe muss in numerischer Reihenfolge erfolgen, von der niedrigsten zur höchsten.
- Damit der Titel relevant wird
n
, muss der höchste behandelt werdenn=77
(wenn Sie nicht mit dem höchsten umgehen können, beachten Sie, warum - Spracheinschränkungen akzeptabel sind, Faulheit nicht). Diese Einschränkung soll die Benutzer daran hindern, die gesamte Obermenge im Speicher zu erstellen. - Wenn TIO
n=77
für Ihren Code nicht ausgeführt werden kann, erläutern Sie, welche Spezifikationen erforderlich waren, um dies zu erreichenn=77
. - Damit ein Produkt gültig ist, muss es aus mindestens 2 Zahlen bestehen.
- Dies ist Code-Golf. Die niedrigste Byteanzahl wird als siegreich eingestuft.
- Sie können die Liste so auswählen, dass sie Elemente enthält, die kleiner
l
oder gleich sindl
. - BONUS : Wenn Ihr Code genau 77 Bytes hat, ein dickes Lob von mir; wertlos, ich weiß.
n
l
n=77
undl=7**7**7
zum Beispiel ausgeführt?Antworten:
05AB1E , 19 Bytes
Probieren Sie es online!
Erläuterung
Sehr ineffizient. TIO Link führt
ceil(l^(1/7))
Iterationen anstelle derl
in der Golfversion verwendeten Iterationen durch, um das Testen großer Testfälle zu vereinfachen.quelle
$L7ׂ˜
- versuchte, 5 Bytes zu bekommen, konnte nicht..p
oder.s
auch, aber selbst die scheinen länger zu sein. Ich habe versehentlich auf der TIO-Seite mit meiner Beispielimplementierung auf "Aktualisieren" geklickt, anstatt sie auszuführen, und sie aus dem Bestand gelöscht. Ich glaube es war 26.Jelly ,
21201918 BytesBeachten Sie, dass der Ausgang nicht mit den OPs übereinstimmt. Ich habe einen Kommentar hinterlassen.
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 ,
116113109 BytesBeachten Sie, dass TIO nicht genügend Speicher für den letzten Testfall hat.
Probieren Sie es online!
quelle
JavaScript (ES6),
103 bis101 ByteÜbernimmt Eingaben in der Currying-Syntax
(n)(l)
.Testfälle
Der letzte Testfall kann einige Sekunden dauern.
Code-Snippet anzeigen
quelle
PHP, 142 Bytes
-5 Bytes Entfernen
$r=[];
und Ersetzensort($r);
mit@sort($r);
Online Version
Erweitert
Eine rekursive Funktion macht alle Permutationen einschließlich des Limits
PHP, 145 Bytes
Erweitert
ein loop till inklusive limit prüft jeden durch 49 teilbaren wert
Online Version
Ein paar Bytes mehr und ein assoziatives Array können erstellt werden. Geben Sie die Nummer und als Wert ein Array der verwendeten Siebenen ein
Online Version
quelle
while($c=$t*$v[+$i++])$l<$c?f($c)&$r[$c]=$c;
Spart 3 Bytes; aber es sollte sein$l<=$c
.$r?sort($r)&print_r($r):0;
statt$r=[];
spart man.$z.=7;
ist 5 Bytes kürzer als$z=$z*10+7;
.@
ist weitere 4 Bytes kürzer als$r?...:0;
. (Danke @Christoph)$l<=$c
? Anscheinend war gestern nicht mein Tag für die$z.=7
und die zusätzlichen 2 Bytes, die ich gefunden habe. Ich denke zuerst über Ihre beiden anderen Vorschläge nach. Sie verpassen die:
in der while-Schleifethat are less than l
, in seinen Beispielen über sieare less than or equal
. Je nach Abklärung sind$c>$l||...
/$c>$l?:...
oder$c<$l&&...
am kürzesten.Ruby,
8986 BytesEine rekursive Lösung.
-3 Bytes, indem Sie daran denken, dass alles, was mal 0 ist, 0 ist.
Probieren Sie es online!
quelle
Pyth , 22 Bytes
Probieren Sie es online!
Technische Daten
l[newline]n
array containing the sorted result
quelle
PHP,
128 125 130 129 127123 Bytesfunktioniert bis zu 22
7
s, rundet jedoch größere Werte (7 ** 23 ist Gleitkomma auf einer 64-Bit-Maschine).3 Bytes gespeichert von Jörg, 3 von mir,
5 41 hinzugefügt, um eine Warnung vor leeren Ergebnissen zu vermeiden.Nimmt Eingaben von Befehlszeilenargumenten entgegen. Laufen Sie mit
-nr
oder versuchen Sie es online .Nervenzusammenbruch
quelle
for([,$c,$z]=$argv,$n=1+$c;$c<$z;
stattfor($n=1+$c=$argv[1];$c<$z=$argv[2];
@
statt$r&&
, um die Warnung zu unterdrücken?$p<$z&&$r[$p]=$p
$p>$z?:$r[$p]=$p
von Beispieln=1, l=343
klar ist , dassl
aufgenommen werden sollten. Daher gibt es keine Einsparungen bei der Verwendung von$p>$z||$r[$p]=$p
oder$p>$z?:$r[$p]=$p
.@
; wird bearbeitet, wenn das OP antwortet.$p>$z||
oder$p<$z&&
. Ich bleibe bei der Beschreibung.Brachylog , 28 Bytes
In der Sprache selbst gibt es hier viel Raum für Verbesserungen. Einige Dinge, die ich geschrieben habe, scheinen offensichtlich verbesserungsfähig zu sein, wenn man das Design der Sprache ändert. Dies ist der kürzeste Weg, den ich mit der aktuellen Version gefunden habe. Ich kann durchaus einige Vorschläge für Brachylog machen, die dieses Programm effizienter, kürzer und lesbarer machen würden.
Sehr sehr langsam; TIO überschreitet das Zeitlimit sogar bei der einfachstmöglichen, nicht trivialen Antwort, sodass es nicht sinnvoll ist, eine TIO-Verbindung bereitzustellen. Ich habe dieses Programm überprüft, indem ich es lokal ausführe.
Dies ist eine Funktion (kein vollständiges Programm), deren Ausgabe ein Generator ist (im Gegensatz zu einer Liste). Fügen Sie
.w⊥
am Ende der Funktion hinzu, wenn Sie nicht nur die erste, sondern alle Ausgaben anzeigen möchten. (Beachten Sie, dass dies in der Praxis keine Rolle spielt, da das Programm für TIO ohnehin zu langsam ist, müssen Sie es lokal ausführen, und der lokale Brachylog-Interpreter wird in einer REPL ausgeführt, die einen Generator genau beschreiben kann.)Erläuterung
quelle
Bash + GNU-Dienstprogramme, 108
Probieren Sie es online aus . TIO benötigt ungefähr eine Minute für den letzten Testfall. Meine Ergebnisse stimmen mit denen von @ Dennis überein .
quelle
Pyth -
57514942 BytesVersuch es
quelle
7
und77
für die aktuelle Eingabe.m
anstelle vonF
oderV
usw. (funktionale Programmierung vs. Ausführungskontrolle); verwendenhQ
statt@Q0
; verwendeneQ
statt@Q1
; Verwenden Siei*hQ]7T
anstelle der langen for-Schleife, um zu generieren777...7
.