Zainspirowany dzisiaj tym pytaniem chciałbym zobaczyć ciekawe sposoby, w jakie różne języki programowania mogą zamienić numpad w prawdopodobieństwa. Zwykle gry oparte na kafelkach pozwalają używać klawiatury numerycznej do poruszania się w dowolnym kierunku w zależności od tego, gdzie aktualnie znajduje się twoja postać. Tworzenie AI dla tych gier Math.random() * 8
nie jest wystarczające, więc musiałem wykazać się kreatywnością, aby ruch wyglądał naturalnie.
Numpad jest zdefiniowany jako taki:
7 | 8 | 9
- - - - -
4 | x | 6
- - - - -
1 | 2 | 3
Uwaga: 5 to nieprawidłowy numer, ponieważ nie możesz przejść do siebie.
Wszystkie przykłady wykorzystają następujące prawdopodobieństwa: [50, 40, 30, 20, 10]
Gdybym chciał wygenerować prawdopodobieństwa 8
, wyglądałoby to tak:
40 | 50 | 40
-- | -- | --
30 | xx | 30
-- | -- | --
20 | 10 | 20
Wyjście byłoby [20, 10, 20, 30, 30, 40, 50, 40]
(z pominięciem 5) lub [20, 10, 20, 30, null, 30, 40, 50, 40]
(z obecnością 5)
Gdybym chciał je wygenerować 1
, wyglądałoby to tak:
30 | 20 | 10
-- | -- | --
40 | xx | 20
-- | -- | --
50 | 40 | 30
Wyjście byłoby [50, 40, 30, 40, 20, 30, 20, 10]
(z pominięciem 5) lub [50, 40, 30, 40, null, 20, 30, 20, 10]
(z obecnością 5)
Możesz napisać pełny program, który pobiera dane wejściowe w dowolny zwykły sposób (wiersz poleceń, standardowe wyjście) i wypisuje dane wyjściowe, lub możesz napisać funkcję z argumentem liczbowym, która wypisuje lub zwraca dane wyjściowe. Twój program lub funkcja powinna zaakceptować jeden numer - pozycję do wygenerowania wokół. Powinieneś użyć tych prawdopodobieństw: [50, 40, 30, 20, 10]
(nie muszą być zakodowane na stałe).
Najkrótszy kod w bajtach wygrywa. Standardowe luki są niedozwolone. Odpowiedzi opublikowane w połączonym wątku są niedozwolone. Dozwolone są spacje końcowe lub wiodące. Możesz traktować pozycję 4
jako nieobecną lub pustą, w zależności od preferencji. Nie jestem zbyt wybredny co do formatu wyjściowego - wydrukuj go jako ciągi rozdzielone przecinkami lub jako tablicę.
(To moje pierwsze pytanie, spokojnie!)
Python - 115
a
to tablica z wartościami w porządku wokół klawiatury numerycznej (przeciwnie do ruchu wskazówek zegara od 1) ib
odwzorowuje liczby na klawiaturze numerycznej na pozycje wokół niej. Na podstawie liczby spacji wokół klawiatury numerycznej dla liczby wejściowej (określonej za pomocąb
) tworzy tablicę z tyloma elementami przesuniętymi od przodua
do końca, a następnie używab
ponownie do zmiany układu elementów zgodnie z liczbami na klawiaturze numerycznej.źródło
/10
a następnie wprowadzając*10
pętlę.(a[c:]+a[:c])[e]
to samo,a[(c+e)%8]
czya[c+e-8]
? A następnie podłączeniec
upraszcza wyrażenie.Pyth - 38 bajtów
Używa trochę tej samej techniki co odpowiedź Pythona, z wyjątkiem kompresji bazowej dla dwóch tablic.
Wypróbuj tutaj online .
źródło
Java, 190
String v
utrzymuje prawdopodobieństwa (podzielone przez 10) w kolejności przeciwnej do ruchu wskazówek zegara, przy czym input = 1 jest wartością domyślną 50.int[]i
tłumaczy dane wejściowe na indeks na v. Na przykładv.charAt(i[1])
jest5
. Wejścia 0 i 5 są niepoprawne, więc zarówno i [0], jak i i [5] mają wartość zastępczą 8, która jest indeksem „\ 0” na końcu v.Obracam liczby w v w prawo o wartość i [n], a następnie drukuję prawdopodobieństwa jako ciągi oddzielone przecinkami.
źródło