Wyzwanie:
Dane wejściowe: trzy liczby całkowite: długość dolnej krawędzi; początkowa ilość ziaren piasku; indeks
Wyjście: Wyświetla stan dolnej części klepsydry przy danym wskaźniku, na podstawie podanej długości dolnej krawędzi i ilości ziaren piasku.
Zasady konkursu:
- Symulujemy ziarna piasku za pomocą cyfr 1-9
- Pozostałą ilość ziaren piasku umieszczamy na górze pośrodku, a następnie jeden wybrany przez Ciebie znak (z wyłączeniem cyfr, białych znaków i nowych wierszy; tj.
-
) W wierszu poniżej - Kiedy klepsydra jest napełniana, wypełniamy ją w rzędzie, po jednej cyfrze na raz
- Kiedy piasek może iść w lewo lub w prawo, ZAWSZE idziemy w prawo (to samo dotyczy równoważenia pozostałej ilości ziaren piasku powyżej klepsydry)
- Kiedy osiągnęliśmy 9, jest wypełniona i nie możemy już zmieścić piasku w tym konkretnym miejscu klepsydry
- Pozostała ilość ziaren piasku jest zawsze odpowiednio wyrównana
- Gdy dolna połowa klepsydry zostanie całkowicie wypełniona lub ilość pozostawionych ziaren piasku osiągnie 0, nie możemy iść dalej, a to byłby wynik dla wszystkich indeksów poza tym punktem
- Dozwolone jest zarówno indeksowanie 0, jak i indeksowanie 1, i proszę podać, czego użyłeś w swojej odpowiedzi.
- Spacje końcowe i wiodące oraz pojedyncza spacja lub wiodąca nowa linia są opcjonalne
- Możesz użyć dowolnego innego znaku zamiast zera, aby wypełnić puste miejsca w dolnej części klepsydry (z wyłączeniem cyfr, nowych wierszy lub znaku, którego użyłeś jako szyi), jeśli zdecydujesz się je wyświetlić.
- Długość dolnej krawędzi zawsze będzie nieparzysta
- Długość dolnej krawędzi będzie
>= 3
; i ilości ziaren piasku>= 0
- Jeśli chcesz, możesz również wydrukować wszystkie stany do podanego indeksu włącznie
- Możesz założyć, że indeks (0-indeksowany) nigdy nie będzie większy niż całkowita ilość ziaren piasku (więc gdy jest 100 ziaren piasku, indeks 100 jest maksymalnym prawidłowym wejściem indeksu).
- Pierwszy indeks (0 dla 0-indeksowanych; 1 dla 1-indeksowanych) wyśle pustą klepsydrę z ilością ziaren piasku nad nią.
Przykład: zdjęcia (lub ascii-art) mówią więcej niż tysiąc słów, więc oto przykład:
Wprowadź długość dolnej krawędzi: 5
Wprowadź ilość ziaren piasku:100
Zamiast bieżącego indeksu wyświetlam tutaj wszystkie kroki:
Dane wyjściowe dla wszystkich możliwych wskaźników o długości dolnej krawędzi 5
i ilości ziaren piasku 100
:
100
-
0
000
00000
99
-
0
000
00100
98
-
0
000
00110
97
-
0
000
01110
96
-
0
000
01111
95
-
0
000
11111
94
-
0
000
11211
93
-
0
000
11221
92
-
0
000
12221
91
-
0
000
12222
90
-
0
000
22222
89
-
0
000
22322
88
-
0
000
22332
87
-
0
000
23332
86
-
0
000
23333
85
-
0
000
33333
84
-
0
000
33433
83
-
0
000
33443
82
-
0
000
34443
81
-
0
000
34444
80
-
0
000
44444
79
-
0
000
44544
78
-
0
000
44554
77
-
0
000
45554
76
-
0
000
45555
75
-
0
000
55555
74
-
0
000
55655
73
-
0
000
55665
72
-
0
000
56665
71
-
0
000
56666
70
-
0
000
66666
69
-
0
000
66766
68
-
0
000
66776
67
-
0
000
67776
66
-
0
000
67777
65
-
0
000
77777
64
-
0
000
77877
63
-
0
000
77887
62
-
0
000
78887
61
-
0
000
78888
60
-
0
000
88888
59
-
0
000
88988
58
-
0
000
88998
57
-
0
000
89998
56
-
0
000
89999
55
-
0
000
99999
54
-
0
010
99999
53
-
0
011
99999
52
-
0
111
99999
51
-
0
121
99999
50
-
0
122
99999
49
0
222
99999
48
-
0
232
99999
47
-
0
233
99999
46
-
0
333
99999
45
-
0
343
99999
44
-
0
344
99999
43
-
0
444
99999
42
-
0
454
99999
41
-
0
455
99999
40
-
0
555
99999
39
-
0
565
99999
38
-
0
566
99999
37
-
0
666
99999
36
-
0
676
99999
35
-
0
677
99999
34
-
0
777
99999
33
-
0
787
99999
32
-
0
788
99999
31
-
0
888
99999
30
-
0
898
99999
29
-
0
899
99999
28
-
0
999
99999
27
-
1
999
99999
26
-
2
999
99999
25
-
3
999
99999
24
-
4
999
99999
23
-
5
999
99999
22
-
6
999
99999
21
-
7
999
99999
20
-
8
999
99999
19
-
9
999
99999
Jako przykład:
inputs: 5,100,1
output:
99
-
0
000
00100
Same example with another valid output format:
99
~
.
...
..1..
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi odnoszą się standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
INPUTS: bottom-edge length, amount of grains of sand, index (0-indexed)
inputs: 5,100,1
output:
99
-
0
000
00100
inputs: 5,100,24
output:
76
-
0
000
45555
inputs: 5,100,100
output:
19
-
9
999
99999
inputs: 5,10,15
output:
0
-
0
000
22222
inputs: 3,30,20
output:
10
-
0
677
inputs: 3,3,0
3
-
0
000
inputs: 9,250,100
150
-
0
000
00000
2333332
999999999
inputs: 9,225,220
5
-
4
999
99999
9999999
999999999
inputs: 13,1234567890,250
1234567640
-
0
000
00000
0000000
344444443
99999999999
9999999999999
inputs: 25,25,25
0
-
0
000
00000
0000000
000000000
00000000000
0000000000000
000000000000000
00000000000000000
0000000000000000000
000000000000000000000
00000000000000000000000
1111111111111111111111111
5,100,10000
dlaczego20+9+9+9+9+9+9+9+9+9 = 101
?Odpowiedzi:
05AB1E ,
6863595756 bajtówWypróbuj online!
Wyjaśnienie
IÅÉÅ9
Inicjujemy stos za pomocą listy 9.
Każda lista reprezentuje wiersz, więc długość każdej listy jest nieparzysta, a długość ostatniej listy jest równa pierwszej wartości wejściowej.
Wprowadzenie 5 spowoduje, że
[[9], [9, 9, 9], [9, 9, 9, 9, 9]]
[DOO²Q#ćD_Piˆëć<¸«¸ì]
Następnie iterujemy te elementy, zmniejszając elementy listy, aż lista będzie się składać tylko z zer, a następnie przejdziemy do następnej. Zatrzymujemy się, gdy suma będzie równa drugiej wartości wejściowej.
Teraz musimy posortować ostatnią listę symulującą usuwanie elementów z naprzemiennych boków zamiast od lewej do prawej, tak jak to robiliśmy.
Teraz poprawnie formatujemy dane wyjściowe
źródło
Czysty ,
305289 bajtówWypróbuj online!
źródło
Perl 5 , 301 bajtów
Wypróbuj online!
źródło
Węgiel ,
686362 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 5 bajtów, usuwając niepotrzebne teraz sprawdzanie zakresu indeksu. Wyjaśnienie:
Wprowadź długość do
q
, liczbę ziaren piaskuh
i indeks doz
.Pętlę nad
(q+1)/2
rzędami (od dołu do góry), następnie 9 ziaren w każdej komórce w rzędzie, a następnie zapętlić cyfry w rzędzie.Przejdź do cyfry.
Jeśli to możliwe, rozprowadź ziarno piasku na tej cyfrze, zmniejszając ilość piasku i pozostałego wskaźnika. Jeśli minęliśmy indeks, nadal konwertuje spacje na zera, wypełniając klepsydrę. Cyfra jest drukowana w górę, ponieważ oznacza to, że kursor znajdzie się na szyi po ostatniej cyfrze.
Wydrukuj szyję.
Wyśrodkuj i wydrukuj pozostałą ilość piasku.
źródło