Ce problème provient de cinq problèmes de programmation que chaque ingénieur logiciel devrait être en mesure de résoudre en moins d'une heure, ce qui est en soi une lecture intéressante. Les premiers problèmes sont triviaux, mais le quatrième peut être un peu plus intéressant.
Étant donné une liste d'entiers séparés par un seul espace sur l'entrée standard, imprimez les valeurs les plus grandes et les plus petites qui peuvent être obtenues en concaténant les entiers ensemble sur leur propre ligne.
Par exemple:
Contribution:
5 56 50
Production:
50556
56550
Différents rappels au règlement:
- L'ordre des résultats est le plus petit puis le plus grand.
- Seules les valeurs les plus petites et les plus grandes peuvent être imprimées (itérer sur toutes les variations et les imprimer n'est pas valide).
- Il y aura toujours deux ou plusieurs entiers dans la liste.
- Il est possible que les résultats les plus grands et les plus petits soient identiques. En cas de saisie
5 55
, le numéro555
doit être imprimé deux fois. - Les entiers ne sont pas nécessairement distincts.
5 5
est une entrée valide. - Les
0
s sur les entiers ne sont pas des entrées valides. Vous n'aurez pas besoin d'en rendre compte05 55
.
Comme il s'agit de golf de code, l'entrée la plus courte l'emporte.
05
), le considérons-nous comme05
ou simplement5
?Réponses:
CJam,
1413 octetsAssez simple. Voilà comment cela fonctionne:
Essayez-le en ligne ici
la source
e!
(n'apparaît même pas encore dans le wiki).Pyth,
1413 octetsGénère toutes les permutations et les trie, imprimant le premier et le dernier élément.
la source
J
ligne:hJSmsd.pcz)eJ
Python 2,
10499 octetsOui.
Edit: merci à xnor pour -5 octets!
la source
sorted
fonctionne sans parenthèses, mais vous pouvez également éviter le tri et simplement prendremin
etmax
.Mathematica,
6458 octetsCeci définit une fonction sans nom prenant une chaîne et imprimant les deux lignes. C'est assez simple comme les autres: obtenez toutes les permutations, réunissez-les, triez-les et imprimez le premier et le dernier résultat.
Six octets économisés grâce à l'alephalphe.
la source
{#&@@#,Last@#}
=>#[[{1,-1}]]
JavaScript (ES6)
54 7285C'est plus facile qu'il n'y paraît. Triez-les simplement lexicographiquement. La bonne nouvelle est: c'est exactement comme cela que le tri en javascript fonctionne.Eh bien ... non, c'est faux ... toujours un lexicographe (plus compliqué) peut faire le travail.Remarque: ayant a et b numérique, a + [b] est un raccourci pour a + '' + b, car nous avons besoin d'une concaténation de chaînes et non d'une somme.
Note 2: la nouvelle ligne à l'intérieur `` est significative et doit être comptée
Éditer Ne discutez pas avec un modérateur (... je plaisante)
Edit2 Format d'E / S fixe à l'aide de fenêtres contextuelles (voir Par défaut pour Code Golf: méthodes d'entrée / sortie )
Tester dans la console Firefox / FireBug
la source
J, 34
36,42octetsforce brute simple:
la source
Haskell, 98 octets
Séparez la chaîne d'entrée aux espaces, concaténez chaque permutation et triez. Imprimer le premier et le dernier élément.
la source
Julia, 77 octets
Cela crée une fonction sans nom qui accepte un vecteur en entrée et imprime le minimum et le maximum des permutations des éléments joints. Pour l'appeler, donnez-lui un nom, par exemple
f=v->...
.Non golfé + explication:
Les suggestions sont les bienvenues!
la source
Javascript ( ES6 ) 134
Malheureusement, il n'y a pas de fonction de permutation intégrée dans JS :(
la source
R, 59 octets
la source
combinat::permn
.::
que le paquet devait être chargé (vialibrary
ourequire
) mais pas:::
. Je peux me tromper; besoin de lire un peu plus à ce sujet. Merci.permn
directement sanslibrary(combinat)
.library(combinat)
avant de pouvoir l'utiliser depermn
toute façon. ;)Rubis 75
Ce n'est pas ma langue «native», mais celle que je pensais essayer… donc cela pourrait (peut-être) utiliser des conseils de golf. Pourtant, pas un mauvais participant.
Je ne dirais pas que c'est élégant autre que tout est intégré à la langue. Il devrait être assez évident exactement comment cela fonctionne.
la source
{|x|x.join}
par(&:join)
pour une économie de 3 octets.puts$<.read.split.permutation.map(&:join).minmax
puts gets.split.permutation.map(&:join).minmax
Perl,
7970B (68 + 2)use Math::Combinatorics;say for(sort map{join'',@$_}permute@F)[0,-1]
Appelez avec
echo 13 42 532 3 6|perl -M5.10.0 -an scratch.pl
. Il y a une pénalité de +2 octets pour-an
. Dommage pour la longueur du nom du module ...la source
JavaScript (ES6), 85 octets
usage:
la source