MATL , 25 octets
Cela fonctionne pour l'entrée jusqu'à 16
:
10,i:^9/Y[t0)Yftb!w\~s1=)
La version suivante utilise 31 octets et fonctionne jusqu'à 18
. Car 19
il nécessite environ 4 Go de mémoire (je n'ai pas pu l'exécuter).
10,i:^9/Y[t0)5X2Y%Yfotb!w\~s1=)
Exemple
>> matl
> 10,i:^1-,9/t0)5X2Y%Yfotb!w\~s1=)
>
> 6
7 13
Explication
Tenez compte de la saisie du concret 6
. D'abord, les diviseurs premiers de 111111
sont calculés; dans ce cas , les résultats sont 3
, 7
, 11
, 13
, 37
. Ensuite , l'opération modulo (reste de la division) est calculé pour toutes les combinaisons de nombres 1
, 11
, ... 111111
et les diviseurs calculés. Ceci exploite l'expansion implicite singleton de MATL. Le résultat est dans ce cas une matrice 6
x 5
, chaque colonne correspondant à l'un des diviseurs. Les diviseurs (colonnes) acceptés sont ceux pour lesquels seule la 1
valeur (à savoir la dernière) donne zéro reste.
10,i:^9/Y[ % generate vector with `1`, `11`, ... depending on input number, say "n"
t0) % pick the last element: `111...1` (n ones)
5X2Y% % * convert to uint64, so that larger numbers can be handled
Yf % prime factors
o % * convert to double precision, so that modulus can be done
t % duplicate
b % bubble up element in stack
! % transpose
w % swap elements in stack
\ % modulus after division (element-wise, singleton expansion)
~s % number of zero values in each column
1= % is equal to 1? (element-wise, singleton expansion)
) % index divisors with that logical index
(*) Supprimé dans la version courte
la source
Réponses:
Julia, 103 octets
Il s'agit d'une fonction sans nom qui appelle une fonction d'assistance
R
. Pour l'appeler, donnez un nom à la fonction principale, par exemplef=n->...
.Non golfé:
la source
LabVIEW, 33 primitives LabVIEW
19 prend une éternité ...
Travaillez en enregistrant tous les amorces et en supprimant les éléments du dernier ensemble lorsqu'ils se trouvent dans l'autre tableau.
la source
J, 24 octets
Attend une précision numérique étendue après 6 (par exemple
19x
au lieu de19
).Essayez-le en ligne!
Il existe probablement un moyen plus court de générer les remboursements, ce qui évite également les plafonds.
Explication
Comment ça marche, visuellement
Je pense que ce genre d'explications visuelles est plus facile à digérer pour ceux qui ne connaissent pas J. Ce sont des résultats du REPL.
la source