Vous êtes un employé de la nouvelle épicerie branchée Half Foods, et c'est la veille de Thanksgiving Christmas Easter. Étant donné que le magasin sera rempli de clients se précipitant pour obtenir leurs denrées alimentaires, le magasin a besoin d'un gestionnaire de trafic pour envoyer tout le monde aux lignes appropriées. Étant paresseux, vous aimeriez automatiser cela afin de pouvoir aller à la charcuterie avant que tout le monde ne prenne tout le jambon de dinde . Cependant, tout ce que vous avez avec vous est votre téléphone, et coder de longs programmes dessus est une vraie douleur - vous devez donc vous défaire de vos compétences de ninja -golf .
Défi
Visualisons l'épicerie sur une grille à deux dimensions. Voici un exemple de grille à disséquer:
e
s
s
s
Y
# # #s #
#s # #s #
#s # #s #
#s #s #s #
#3 #1 #4 #
x x x x
La grille commence par un e
, qui représente une "sortie" pour le reste du magasin. Chaque génération, tous les points de vente de la grille génèrent un client ( s
) directement en dessous. Les acheteurs descendent chaque génération jusqu'à ce qu'ils vous atteignent ( Y
). Lorsqu'un acheteur atteint la même ligne que vous, vous devez le téléporter au début de la ligne avec le moins de clients. Un acheteur passe immédiatement à la ligne lorsqu'il se déplacerait dans la rangée avec le Y
, il n'y a pas de génération entre les deux. Les lignes sont représentées par le #
s - la colonne après le #
s est une ligne. Les acheteurs descendent jusqu'à la fin de la ligne (représentée par une sortie x
), puis se transforment en un nombre aléatoire entre 1
et5
. Chaque génération, vous devez décrémenter les acheteurs numérotés de 1
- lorsqu'un acheteur atteint 0
, il a fini de vérifier et quitte le magasin.
Étant donné l'entrée d'une grille comme celle-ci, sortez la prochaine génération de l'épicerie (déplacez tous les acheteurs vers le bas simultanément, redirigez les acheteurs et faites-les partir s'ils ont terminé).
Échantillons
Contribution:
e
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Production:
e
s
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Contribution:
e
s
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Production
e
s
Y
#s # # #
# # # #
# # # #
# # # #
# # # #
x x x x
Contribution:
e
Y
# # # #
# # # #
# # # #
#s # # #
# # # #
x x x x
(Possible) Sortie:
e
s
Y
# # # #
# # # #
# # # #
# # # #
#3 # # #
x x x x
Contribution:
e
s
Y
# # # #
# # # #
# # # #
# # # #
#3 # # #
x x x x
Production:
e
s
Y
# #s # #
# # # #
# # # #
# # # #
#2 # # #
x x x x
Contribution:
e
Y
# # # #
# # # #
# # # #
# # # #
#1 # # #
x x x x
Production:
e
s
Y
# # # #
# # # #
# # # #
# # # #
# # # #
x x x x
C'est le code-golf , donc le code le plus court l'emporte.