Donnez crédit à qui le crédit est dû .
Objectif Étant donné un nombre entier N > 0
, les plus petits entiers A
, B
et de C
telle sorte que:
- Tous
A
,B
etC
sont strictement supérieurN
; 2
diviseA
;3
diviseB
;- et
4
diviseC
.
Il s'agit d'un code-golf, donc la réponse la plus courte en octets l'emporte. Vous pouvez utiliser un langage créé / mis à jour après ce défi, mais il est strictement non concurrentiel.
Cas de test
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
) si cela est clairement spécifié dans la réponse?Réponses:
Gelée , 8 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça marche
la source
Python 2, 32 octets
Arithmétique des bits pour 2 et 4, arithmétique modulaire pour 3.
J'ai trouvé quatre expressions de 7 octets pour le prochain multiple de
k
ci - dessusn
mais aucune plus courte:Any donne 34 octets lors de la copie
k=2,3,4
et 33 octets s'ils sont combinés:Mais, 2 et 4 sont des puissances de 2 qui permettent aux tours de bits de remettre à zéro les 1 ou 2 derniers octets.
Cela donne 6 octets (au lieu de 7) pour obtenir le prochain multiple, pour 32 octets au total, en battant le
for k in 2,3,4
.Malheureusement, l'aspect prometteur
n|1+1
etn|3+1
l'ajout sont effectués en premier, donc l'incrémentation de la sortie prend des parenthèses.la source
n+k-n%k
.n&3+1
- ce que l'ajout fait d'abord aussi?Julia, 16 octets
Essayez-le en ligne!
la source
MATL,
15 109 octetsEssayez-le en ligne!
Explication:
la source
5M
(presse-papiers automatique des entrées de fonction) au lieu du second2:4
.MATL, 8 octets
Utilise l'algorithme Jelly de Denis, je suis surpris que ce soit la même longueur!
Essayez-le en ligne ou vérifiez tous les cas de test .
la source
Matlab, 33 octets
Une autre approche légèrement différente
la source
05AB1E , 8 octets
Code:
Essayez-le en ligne! .
la source
±D2xŸ%α
(2xŸ
c'est juste une alternative pour votre3L>
; et deux autres alternatives à octets égaux pourraient êtreƵ…S
ou4L¦
).Rubis, 27 octets
Mappe 2, 3 et 4 au multiple suivant ci-dessus
n
.la source
CJam, 15 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
la source
Pyke,
11 98 octetsEssayez-le ici!
la source
Mathematica, 21 octets
Il s'agit d'une fonction sans nom qui prend en entrée un seul entier et renvoie une liste des multiples.
La
Ceiling
fonction prend un second paramètre facultatif qui lui dit d'arrondir au multiple suivant du nombre donné. Heureusement, il enfile également automatiquement son deuxième argument afin que nous puissions lui donner une liste de valeurs et à son tour, nous obtiendrons des multiples arrondis pour tous ceux-ci.la source
Octave, 20 octets
Exemples:
Il convient de noter que nous pouvons le faire jusqu'à 9 sans ajouter d'octets supplémentaires:
Sortie (2520 est le plus petit entier positif divisible par tous les nombres à un chiffre):
la source
Haskell, 27 octets
la source
Labyrinthe , 19 octets
Essayez-le en ligne!
Cela génère les résultats dans l'ordre
C, B, A
séparé par des sauts de ligne.Explication
Comme d'habitude, une courte introduction au Labyrinthe:
Malgré les deux non-ops (
"
) qui rendent la mise en page un peu inutile, je suis assez satisfait de cette solution, car son flux de contrôle est en fait assez subtil.L'IP commence dans le coin supérieur gauche à
:
droite. Il atteindra immédiatement une impasse sur le?
et se retournera, de sorte que le programme démarre réellement avec ce morceau de code linéaire:Cela signifie que nous avons maintenant trois exemplaires de
n
sur la pile principale, mais sa profondeur est4
. C'est pratique car cela signifie que nous pouvons la profondeur de la pile pour récupérer le multiplicateur actuel tout en travaillant à travers les copies de l'entrée.L'IP entre désormais dans une boucle 3x3 (dans le sens des aiguilles d'une montre). Notez que
#
, ce qui pousse la profondeur de pile, poussera toujours une valeur positive telle que nous savons que l'IP se tournera toujours vers l'est à ce point.Le corps de la boucle est le suivant:
Après que la boucle a été parcourue (jusqu'à
!
) trois fois, toutes les copies den
sont utilisées et le zéro en dessous est révélé. En raison"
du bas (qui semble autrement assez inutile), cette position est une jonction. Cela signifie qu'avec un zéro au-dessus de la pile, l'IP essaie d'aller tout droit (ouest), mais parce qu'il y a un mur, il fait un virage à 180 degrés et recule vers l'est comme s'il avait atteint une impasse.Par conséquent, le bit suivant est maintenant exécuté:
la source
Matlab, 50 octets
la source
2:4
place de[2 3 4]
.Pyth,
1110 octetsSuite de tests.
Merci à Dennis pour un octet!
la source
JavaScript (ES6), 26 octets
Il est intéressant de porter la réponse Ruby de @ KevinLau ou la réponse Python @ xnor de la même longueur:
J'ai une légère préférence pour le port de la réponse Ruby car il fonctionne jusqu'à 2 53 -3 tandis que le port de la réponse Python ne fonctionne que jusqu'à 2 31 -5.
la source
)
->]
comme je penseC,
5046 octetsMerci à Neil et nwellnhof pour avoir économisé 4 octets!
Décevamment long. J'ai l'impression qu'il y a un hack décalé ici que je ne connais pas, mais je ne le trouve pas encore. Renvoie un pointeur sur un tableau contenant les trois éléments. Programme complet:
la source
n + i - n % i++
un comportement indéfini?s/a[i-2]/*a++/
pour économiser deux octets.f(a,n,i)int*a;{for(i=1;++i<5;)*a++=n+i-n%i;}
Reng, 40 octets
1: init
i1+#i
définit l'entrée sur1 + input
; c'est parce que nous devons travailler sur des nombres strictement supérieurs à l'entrée.234
initialise la bande avec nos valeurs d'itération, et1ø
saute au début de la ligne suivante.2a: boucle
i(
place l'entrée au STOS et2[
crée une nouvelle pile avec les 2 premiers éléments.¤
duplique la pile et,
fait le module. S'il y a un reste,q!^
sort de la boucle pour aller en (b). Sinon, nous pouvons imprimer.$
supprime le truc supplémentaire,]
ferme la pile et l'æ
imprime bien.l0wq!~
se termine si la pile ne contient aucun membre.2b: cette autre boucle
(1+)
ajoute 1 au STOS et31j
saute à la partie de la boucle qui ne prend pas de trucs de la pile. Et le profit.Cet espace supplémentaire me dérange vraiment. Prenez un GIF.
la source
Rétine,
624326 octets17 octets grâce à @Martin Büttner .
(Notez la nouvelle ligne de fin.)
Essayez-le en ligne!
Entrée en unaire dans
1
, sortie en unaire en1
séparée par des retours à la ligne.Version précédente de 43 octets:
Essayez-le en ligne!
Entrée en unaire, sortie en unaire séparée par un point-virgule (
;
).Version précédente de 62 octets:
Essayez-le en ligne!
Entrée en unaire, sortie en unaire séparée par un point-virgule (
;
).la source
Octave,
272220 octetsMATLAB et Octave:
Mieux (les solutions sont équivalentes, mais l'une peut surpasser l'autre lors de la poursuite du golf), MATLAB et Octave:
Uniquement en Octave:
Essayez ici .
la source
Minkolang 0,15 , 17 octets
Essayez-le ici!
Explication
la source
> <> , 31 octets
S'attend
N
à être présent sur la pile au démarrage du programme. Essayez-le en ligne!la source
Mathematica 28 octets
{2, 3, 4}
{6, 6, 8}
{44, 45, 44}
{124, 126, 124}
{422, 423, 424}
{31416, 31416, 31416}
{1081178, 1081179, 1081180}
Le cas général donne une réponse générale:
{2 + r - Mod [r, 2], 3 + r - Mod [r, 3], 4 + r - Mod [r, 4]}
la source
R,
3026 octets(Réduction de 4 octets grâce à @Neil)
Cela (comme pour le reste des réponses, je suppose) ajoute 2: 4 à l'entrée et réduit le reste après avoir exécuté modulo sur les mêmes nombres.
la source
N+2:4-N%%2:4
?UGL ,
51312524 octetsEssayez-le en ligne!
Version précédente de 25 octets:
Essayez-le en ligne!
Version précédente de 31 octets:
Essayez-le en ligne!
Version précédente de 51 octets:
Essayez-le en ligne!
la source
Java
7057la source
=
deint a = new Integer(z[0]);
Golfscript, 22 octets
Essayez-le en ligne!
Solution alternative à 22 octets:
Essayez-le en ligne!
la source
En fait, 22 octets
Essayez-le en ligne!
Fait amusant: 3 bogues dans l'interprète d'Actually ont été trouvés et corrigés lors de l'écriture de ce programme.
Fait pas si amusant: ces 3 bogues ont empêché cette solution d'être beaucoup plus courte.
Explication:
la source
J, 18 octets
Essayez-le en ligne!
la source