MuPAD 113 - 8 = 105

1

MuPAD 113 - 8 = 105

g:=[0,ithprime(i)$i=1..n]:f:=_for_in:f(l,g,f(d,g,f(b,g,f(a,g,f(c,g,if l+d+b+a+c=n then print(l,d,b,a,c)end)))))

Cette version imprimera également toutes les permutations de chaque solution:

0, 0, 0, 0, 7
0, 0, 0, 2, 5
0, 0, 0, 5, 2
0, 0, 0, 7, 0
0, 0, 2, 0, 5
...

Et oui, cela crée une liste beaucoup trop longue g. On s'en fout? :-)

Version non golfée:

g:=[0].select([$1..n],isprime):
for l in g do
  for d in g do
    for b in g do
      for a in g do
        for c in g do
          if l+d+b+a+c=n then print(l,d,b,a,c); end;
        end
      end
    end
  end
end
Christopher Creutzig
la source
Je n'ai pas accès à mupad - quelqu'un peut-il vérifier que cela fonctionne?
stand

Réponses:

1

Gelée , 19 octets (mais très lente - avis demandé)

ÆR;0x5Œ!ḣ€5¹©S€i³ị®

Essayez-le en ligne!

ÆR;0x5Œ!ḣ€5¹©€i³ị®     main link, takes one argument N
ÆR                     get all the primes less than N
  ;0x5                 add zero, and then repeat the entire list 5 times
      Œ!               get all the permutations of this huge list (takes a long time!)
        ḣ€5            for each permutation, just take the first 5 numbers
                       (this gives us all possible length-5 combinations of the primes plus zero, with some repeats)
           ¹©          save that list to register
              S€       take the sum of every permutation in the list...
                i³     and find the index of our first argument N in that list of sums
                  ị®   then recall our list of permutations, and get the correct permutation at that index!

Si vous avez des idées pour le rendre plus rapide et plus court, faites-le moi savoir!

Harry
la source
1
12 octets . ṗЀ5produit toutes les combinaisons de nombres premiers avec des longueurs de un à cinq. S=¥vérifie si la somme de l'un des éléments est égale à l'argument de la chaîne et Ðfne conserve que ces éléments. n'est là que pour mettre toutes les listes de nombres premiers au même niveau dans la liste
dylnan
Maintenant 10 octets depuis et Ƈont été ajoutés comme alias pour ЀetÐf
dylnan