Il y a quelque temps, j'ai acheté un nouveau portefeuille qui peut contenir 8 cartes (4 des deux côtés). Cependant, il me semble que j'ai beaucoup plus de cartes que cela et je dois faire des choix sur celles que je veux emporter avec moi. Certaines cartes que j'utilise plus souvent que d'autres, mais les cartes que je préfère emporter avec moi ne sont pas nécessairement celles que j'utilise le plus.
Le défi
Étant donné une pile de cartes, retournez la disposition de mon portefeuille de la meilleure façon possible par mes préférences et restrictions. La disposition doit être la suivante:
__ __ (row 1)
__ __ (row 2)
__ __ (row 3)
__ __ (row 4)
Actuellement, je possède les cartes suivantes - les piles consisteront toujours en une sélection parmi celles-ci:
- 1 carte d'identité ( ID )
- 1 permis de conduire ( DL )
- 2 cartes de crédit ( CC )
- 5 cartes de débit ( DC )
- 1 carte de transport public ( PC )
- 1 carte d'accès au gymnase ( GC )
- 9 cartes de membre de magasins et entrepôts aléatoires ( MC )
J'ai quelques préférences et restrictions:
- Cartes triées par priorité: ID, DL, CC, DC, PC, GC, MC
- Cartes triées par fréquence d'utilisation: CC, DC, PC, GC, MC, ID, DL
- Pour des raisons de sécurité, le nombre total de cartes de débit et de cartes de crédit dans mon portefeuille peut être au plus 1 de plus que la somme de toutes les autres cartes qui iront dans mon portefeuille ( N DC + N CC ≤ N ID + N DL + N PC + N GC + N MC +1).
- S'ils sont présents, ma carte d'identité et mon permis de conduire doivent toujours aller dans la rangée 1. Cela ne signifie pas que d'autres cartes ne peuvent pas occuper des places dans la rangée 1.
- Les cartes de la pile les plus fréquemment utilisées doivent toujours aller dans la rangée 4.
Règles
- Aucune carte 2 ne peut occuper la même place.
- Les cartes de priorité élevée sont toujours préférées aux cartes de priorité inférieure, sauf si la restriction DC / CC intervient.
- ID / DL à la ligne 1 annule la règle de fréquence: si seul l'ID est fourni, il ira à la ligne 1 et la ligne 4 sera vide!
- Le formatage d'entrée peut être effectué comme vous le souhaitez, tant que l'ordre de la pile d'entrée est conservé. eg
ID,CC,PC,MC,MC,MC,DL
peut également être fourni comme eg1ID 1CC 1PC 3MC 1DL 0DC 0GC
ouID CC PC MC MC MC DL
. Le formatage de sortie a quelques restrictions: les lignes doivent toutes commencer à une nouvelle ligne, les colonnes doivent être délimitées d'une manière ou d'une autre. Les espaces vides peuvent être présentés comme vous le souhaitez, tant que cela ne gâche pas la disposition 4x2.
Il peut y avoir plus d'une solution / commande, c'est à vous de choisir celle que vous fournissez en sortie.
- Vous pouvez supposer que les cartes du même type seront toujours regroupées en entrée.
- En dehors de ce qui précède, les règles et échappatoires standard de golf de code s'appliquent.
Prime
Vous êtes autorisé à retirer 15% de votre bytecount si vous retournez également des cartes qui ne sont pas entrées dans le portefeuille. Imprimer "Ça va!" en cas d'absence de cartes restantes. Cette sortie supplémentaire doit être clairement séparée de la disposition de retour.
Exemples
Contribution:
ID, DL, CC, GC, MC
2 sorties possibles:
ID DL DL ID
__ __ or __ MC
MC __ __ __
CC GC GC CC
optional: It fits!
Contribution:
ID, CC, DC, PC, GC, MC, MC, MC, MC, MC
2 sorties possibles:
ID MC GC ID
MC MC or MC PC
PC GC MC MC
CC DC DC CC
optional: e.g. (MC, MC) or (2MC)
Contribution:
DC, DC, CC, CC, GC, DL
2 sorties possibles:
DL __ GC DL
__ __ or DC __
GC DC __ __
CC CC CC CC
optional: e.g. (DC) or (1DC)
Contribution:
CC, DC, DC, DC
2 sorties possibles:
__ __ __ __
__ __ or __ __
__ __ __ __
CC __ __ CC
optional: e.g. (DC, DC, DC) or (3DC)
Contribution:
CC, CC, MC, MC, MC, MC, MC, MC, PC, DC, DC, DC, DC, DC, GC
2 sorties possibles:
MC MC MC DC
PC GC or DC GC
DC DC PC MC
CC CC CC CC
optional: e.g. (DC, DC, DC, MC, MC, MC, MC) or (3DC, 4MC)
Contribution:
MC, MC, MC, MC, MC, MC, MC
2 sorties possibles:
__ MC MC MC
MC MC or MC MC
MC MC MC __
MC MC MC MC
optional: It fits!
Contribution:
ID, CC
2 sorties possibles:
ID __ __ ID
__ __ or __ __
__ __ __ __
CC __ CC __
optional: It fits!
Il s'agit de code-golf , donc le code le plus court (en octets) l'emporte.
Réponses:
Java 10,
385384382 octetsBien que cela n'ait pas été trop difficile, je peux voir pourquoi il est resté sans réponse. Surtout que la règle concernant " N DC + N CC ≤ N ID + N DL + N PC + N GC + N MC +1 " coûte pas mal d'octets en ce moment ..
Et comme cela fait environ 2,5 ans que ce défi a été posté, OP pourrait avoir un autre portefeuille maintenant de toute façon ..; p
-1 octet grâce à @Jakob .
Essayez-le en ligne.
Explication:
Java 10, 390,15 (459 octets - 15% de bonus)
Essayez-le en ligne.
la source
F
avec{"CC","DC","PC","GC","MC"}
.