Gib Kredit, wem Kredit gebührt .
Ziel Gegeben eine ganze Zahl N > 0
, aus den kleinsten ganzen Zahlen sind A
, B
und C
so , dass:
- Alle von
A
,B
undC
sind streng größer alsN
; 2
teiltA
;3
teiltB
;- und
4
teiltC
.
Dies ist ein Code-Golf, also gewinnt die kürzeste Antwort in Bytes. Sie können eine Sprache verwenden, die nach dieser Herausforderung erstellt / aktualisiert wurde, sie ist jedoch strengstens nicht konkurrierend.
Testfälle
N => A, B, C
1 => 2, 3, 4
4 => 6, 6, 8
43 => 44, 45, 44
123 => 124, 126, 124
420 => 422, 423, 424
31415 => 31416, 31416, 31416
1081177 => 1081178, 1081179, 1081180
C B A
), wenn dies in der Antwort eindeutig angegeben ist?Antworten:
Gelee , 8 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
Wie es funktioniert
quelle
Python 2, 32 Bytes
Bitarithmetik für 2 und 4, modulare Arithmetik für 3.
Ich habe vier 7-Byte-Ausdrücke für das nächste Vielfache von
k
oben gefunden,n
aber keinen kürzeren:Beliebige gibt 34 Bytes beim Kopieren für
k=2,3,4
und 33 Bytes, wenn kombiniert:Aber 2 und 4 sind Zweierpotenzen, mit denen Bit-Tricks die letzten 1 oder 2 Bytes auf Null setzen können.
Dies ergibt 6 Bytes (anstelle von 7), um das nächste Vielfache zu erhalten (insgesamt 32 Bytes)
for k in 2,3,4
.Leider sieht das vielversprechend aus
n|1+1
undn|3+1
muss die Addition erst erledigt werden, so dass das Inkrementieren der Ausgabe Klammern braucht.quelle
n+k-n%k
.n&3+1
der Zusatz zuerst auch?Julia, 16 Bytes
Probieren Sie es online!
quelle
MATL,
15 109 BytesProbieren Sie es online!
Erläuterung:
quelle
5M
(automatische Zwischenablage von Funktionseingaben) anstelle der Sekunde verwenden2:4
.MATL, 8 Bytes
Verwendet Denis 'Jelly-Algorithmus, ich bin überrascht, dass er dieselbe Länge hat!
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
quelle
Matlab, 33 Bytes
Ein etwas anderer Ansatz
quelle
05AB1E , 8 Bytes
Code:
Probieren Sie es online! .
quelle
±D2xŸ%α
(Dies2xŸ
ist nur eine Alternative für Sie3L>
; und zwei andere Alternativen mit gleichen Bytes könntenƵ…S
oder sein4L¦
).Ruby, 27 Bytes
Ordnet 2, 3 und 4 dem nächsten Vielfachen oben zu
n
.quelle
CJam, 15 Bytes
Probieren Sie es online! oder überprüfen Sie alle Testfälle .
quelle
Pyke,
11 98 BytesProbieren Sie es hier aus!
quelle
Mathematica, 21 Bytes
Dies ist eine unbenannte Funktion, die eine einzelne Ganzzahl als Eingabe verwendet und eine Liste der Vielfachen zurückgibt.
Die
Ceiling
Funktion benötigt einen optionalen zweiten Parameter, der sie auf das nächste Vielfache der angegebenen Zahl aufrundet. Zum Glück fädelt es auch automatisch sein zweites Argument ein, sodass wir ihm eine Liste von Werten geben können, und wir werden für all diese wiederum Vielfache aufrunden.quelle
Oktave, 20 Bytes
Beispiele:
Bemerkenswert ist, dass wir dies bis zu 9 tun können, ohne zusätzliche Bytes hinzuzufügen:
Ausgabe (2520 ist die kleinste positive ganze Zahl, die durch alle einstelligen Zahlen gleichmäßig teilbar ist):
quelle
Haskell, 27 Bytes
quelle
Labyrinth , 19 Bytes
Probieren Sie es online!
Dies gibt die Ergebnisse in der
C, B, A
durch Zeilenvorschübe getrennten Reihenfolge aus.Erläuterung
Wie immer ein kurzer Labyrinth-Primer:
Trotz der beiden No-Ops (
"
), die das Layout etwas verschwenderisch erscheinen lassen, bin ich mit dieser Lösung ziemlich zufrieden, da der Steuerungsfluss tatsächlich ziemlich subtil ist.Die IP beginnt in der oberen linken Ecke auf der
:
rechten Seite. Es wird sofort eine Sackgasse auf dem?
und umdrehen, so dass das Programm tatsächlich mit diesem linearen Stück Code beginnt:Das heißt, wir haben jetzt drei Kopien
n
auf dem Hauptstapel, aber die Tiefe ist4
. Das ist praktisch, weil wir so die Stapeltiefe bestimmen können, um den aktuellen Multiplikator abzurufen, während wir die Kopien der Eingabe durcharbeiten.Die IP tritt nun in eine (im Uhrzeigersinn) 3x3-Schleife ein. Beachten Sie, dass
#
die Stapeltiefe immer einen positiven Wert liefert, sodass wir wissen, dass die IP an diesem Punkt immer nach Osten zeigt.Der Schleifenkörper lautet wie folgt:
Nachdem die Schleife
!
dreimal (bis zu ) durchlaufen wurde, sind alle Kopien vonn
verbraucht, und die Null darunter wird angezeigt. Aufgrund der"
am unteren Rand (die sonst ziemlich nutzlos erscheint) ist diese Position eine Abzweigung. Das heißt, mit einer Null oben auf dem Stapel versucht die IP, geradeaus (nach Westen) zu fahren, aber da es eine Wand gibt, dreht sie sich tatsächlich um 180 Grad und bewegt sich nach Osten zurück, als hätte sie eine Sackgasse erreicht.Infolgedessen wird jetzt das folgende Bit ausgeführt:
quelle
Matlab, 50 Bytes
quelle
2:4
statt verwenden[2 3 4]
.Pyth,
1110 BytesTestsuite.
Danke an Dennis für ein Byte!
quelle
JavaScript (ES6), 26 Byte
Interessanterweise führt die Portierung von @ KevinLaus Ruby-Antwort oder @ xnors Python-Antwort zu derselben Länge:
Ich bevorzuge leicht den Port der Ruby-Antwort, da er bis zu 2 53 -3 funktioniert, während der Port der Python-Antwort nur bis zu 2 31 -5 funktioniert .
quelle
)
->]
wie ich denkeC
5046 BytesVielen Dank an Neil und Nwellnhof für das Speichern von 4 Bytes!
Enttäuschend lange. Ich habe das Gefühl, dass es hier einen etwas wechselnden Hack gibt, von dem ich nichts weiß, den ich aber noch nicht finde. Gibt einen Zeiger auf ein Array zurück, das die drei Elemente enthält. Volles Programm:
quelle
n + i - n % i++
zu undefiniertem Verhalten?s/a[i-2]/*a++/
um zwei Bytes zu sparen.f(a,n,i)int*a;{for(i=1;++i<5;)*a++=n+i-n%i;}
Reng, 40 Bytes
1: init
i1+#i
setzt den Eingang auf1 + input
; das liegt daran, dass wir an den zahlen arbeiten sollen, die strikt größer sind als die eingabe.234
initialisiert das Band mit unseren Iterationswerten und1ø
springt zum Anfang der nächsten Zeile.2a: Schleife
i(
Setzt die Eingabe in den STOS und erstellt2[
einen neuen Stapel mit den beiden obersten Elementen.¤
dupliziert den Stapel und,
macht Modul. Wenn es einen Rest gibt,q!^
bricht die Schleife ab, um zu (b) zu gelangen. Andernfalls können wir problemlos drucken.$
Entfernt das Extra-Ding,]
schließt den Stapel undæ
druckt es schön.l0wq!~
wird beendet, wenn der Stack null Mitglieder enthält.2b: diese andere Schleife
(1+)
addiert 1 zum STOS und31j
springt zu dem Teil der Schleife, der keine Daten vom Stapel nimmt. Und profitiere.Dieses zusätzliche Leerzeichen stört mich wirklich. Nimm ein GIF.
quelle
Retina,
624326 Bytes17 Bytes dank @Martin Büttner .
(Beachten Sie den abschließenden Zeilenumbruch.)
Probieren Sie es online!
Eingabe in unary in
1
, Ausgabe in1
unary in durch Zeilenumbrüche getrennt.Vorherige 43-Byte-Version:
Probieren Sie es online!
Eingabe in unary, Ausgabe in unary, durch Semikolon (
;
) getrennt.Vorherige 62-Byte-Version:
Probieren Sie es online!
Eingabe in unary, Ausgabe in unary, durch Semikolon (
;
) getrennt.quelle
Oktave,
272220 BytesMATLAB und Octave:
Besser (Lösungen sind gleichwertig, aber eine kann die andere übertreffen, wenn weiter Golf gespielt wird), MATLAB und Octave:
Nur in der Oktave:
Versuchen Sie es hier .
quelle
Minkolang 0,15 , 17 Bytes
Probieren Sie es hier aus!
Erläuterung
quelle
> <> 31 Bytes
Erwartet
N
, beim Programmstart auf dem Stack vorhanden zu sein. Probieren Sie es online!quelle
Mathematica 28 Bytes
{2, 3, 4}
{6, 6, 8}
{44, 45, 44}
{124, 126, 124}
{422, 423, 424}
{31416, 31416, 31416}
{1081178, 1081179, 1081180}
Der allgemeine Fall liefert eine allgemeine Antwort:
{2 + r - Mod [r, 2], 3 + r - Mod [r, 3], 4 + r - Mod [r, 4]}
quelle
R
3026 Bytes(Reduzierte 4 Bytes dank @Neil)
Dies (ähnlich wie der Rest der Antworten, denke ich) fügt 2: 4 zur Eingabe hinzu und reduziert den Rest, nachdem modulo auf den gleichen Zahlen ausgeführt wurde.
quelle
N+2:4-N%%2:4
?UGL ,
51312524 BytesProbieren Sie es online!
Vorherige 25-Byte-Version:
Probieren Sie es online!
Vorherige 31-Byte-Version:
Probieren Sie es online!
Vorherige 51-Byte-Version:
Probieren Sie es online!
quelle
Java
7057quelle
=
inint a = new Integer(z[0]);
Golfscript, 22 Bytes
Probieren Sie es online!
Alternative 22-Byte-Lösung:
Probieren Sie es online!
quelle
Eigentlich 22 Bytes
Probieren Sie es online!
Unterhaltsame Tatsache: Beim Schreiben dieses Programms wurden 3 Fehler im Interpreter von Actually gefunden und behoben.
Keine so lustige Tatsache: Diese 3 Bugs verhinderten, dass diese Lösung viel kürzer wurde.
Erläuterung:
quelle
J, 18 Bytes
Probieren Sie es online!
quelle