Mon petit enfant a un jouet comme celui-ci:
Ce jouet se compose de 10 petits seaux empilables, que nous allons numéroter de 1 (le plus petit) à 10 (le plus grand). Parfois, il fait de petits tas et le jouet finit comme ceci:
Nous pouvons représenter schématiquement les piles comme ceci:
1 6
4 9 2 7
5 10 3 8
---------- <-- Floor
1 2 3 4 <-- Pile #
Ou, autrement dit:
[[4,5],[9,10],[1,2,3],[6,7,8]]
Cet ensemble de piles de seaux est facilement réempilable pour reconstruire l'ensemble d'origine (la première image) simplement en plaçant consécutivement des piles de petits seaux à l'intérieur de piles de plus grands seaux:
1 1 6
2 2 7
1 6 3 6 3 8
4 9 2 7 4 9 7 4 9
5 10 3 8 5 10 8 5 10
---------- > [Pile 3 to 1] > ---------- > [Pile 4 to 2] > ---------- > [Pile 1 to 2] > Done!
1 2 3 4 1 2 3 4 1 2 3 4
Néanmoins, parfois mon enfant essaie de construire des tours, ou jette des seaux, et les piles finissent par être incohérentes et l'ensemble d'origine ne peut pas être reconstruit simplement en plaçant une pile à l'intérieur d'une autre. Exemples de ceci:
[[1,3,2],[4]] (the kid tried to build a tower by placing a bigger bucket
over a smaller one, we would need to reorder the buckets
first)
[[1,3,4],[2]] (the kid left aside an unordered bucket, we would need to remove
bucket #1 from pile #1 before restacking)
[[1,2,3],[5]] (the kid lost a bucket, we need to find it first)
Défi
Étant donné une liste de listes d'entiers représentant un ensemble de piles de seaux, renvoyez une valeur vraie si les listes représentent un ensemble de piles facilement réempilable, ou falsey dans tout autre cas.
- L'entrée sera donnée sous la forme d'une liste de listes d'entiers, représentant les compartiments de haut en bas pour chaque pile.
- Il n'y aura pas de piles de départ vides (vous n'obtiendrez pas
[[1,2,3],[],[4,5]]
en entrée). - Le nombre total de compartiments peut être n'importe lequel dans une plage entière raisonnable.
- Mon enfant n'a qu'un seul ensemble de seaux, il n'y aura donc pas d'éléments en double.
- Vous pouvez sélectionner deux valeurs cohérentes (et cohérentes) pour truey ou falsey.
- Les compartiments seront étiquetés de # 1 à #N, étant
N
le plus grand entier dans les listes d'entiers. Mon enfant ne connaît toujours pas le concept du zéro. - Vous pouvez recevoir l'entrée dans n'importe quel format raisonnable tant qu'elle représente un ensemble de piles de seaux. Précisez-le simplement dans votre réponse si vous modifiez la façon dont vous recevez les données.
- C'est du golf de code , donc le programme / la fonction la plus courte pour chaque langue peut gagner!
Exemples
Input: [[4,5],[9,10],[1,2,3],[6,7,8]]
Output: Truthy
Input: [[6,7,8,9,10],[1],[2],[3,4,5],[11,12,13]]
Output: Truthy
Input: [[2,3,4],[1],[5,6,7]]
Output: Truthy
Input: [[1,2],[5,6],[7,8,9]]
Output: Falsey (buckets #3 and #4 are missing)
Input: [[2,3,4],[5,6,7]]
Output: Falsey (bucket #1 is missing)
Input: [[1,3,4],[5,7],[2,6]]
Output: Falsey (non-restackable piles)
Input: [[1,4,3],[2],[5,6]]
Output: Falsey (one of the piles is a tower)