Ktoś tu gra w golfa i używa hackowskich sztuczek, aby zminimalizować ilość użytego kodu.
<
jest regularnym operatorem porównania; zwraca True
lub False
na podstawie dwóch argumentów. Typ Python bool
jest podklasą int
i ,, która jest interpretowana jako liczba całkowita. Jako taki C[r<1]
albo wybiera C[0]
lub .
&
jest bitową operator nie operator porównania; & 1
zamaskowuje numer do ostatniego bitu, skutecznie testując, czy liczba jest nieparzysta czy parzysta (ostatni bit jest ustawiony, czy nie). Więc jeśli r
jest nieparzysta, użyto C[1]
, w przeciwnym razie jest C[0]
.
Złamanie tej dół:
C
jest ciągiem z o
i kosmicznych bohaterów
C[r<1]
rozgrywki albo o
lub spacja na podstawie pogoda jest mniejszy niż 1. Nigdy nie jest (Zapewnia to random.randint(1,6)
, czyli zawsze an o
. To wydaje się być błędem lub niedopatrzeniem w kodzie.
C[r<3]
wybiera miejsce na 1 i 2, w innym przypadku na o
.
C[r<5]
wybiera o
dla 5 lub 6, spacja w przeciwnym razie.
C[r&1]
wybiera o
dla 2, 4 i 6, w innym miejscu.
W sumie, drukuje r
plus jeden jako matrycy. r = 1
daje dwa pipsy, a r = 6
w siedem pipsów, być może w formie stylizowanej?
Mocowanie kod, który wymaga inkrementacji wszystkie r
testy i odwracanie parzyste/nieparzyste Test:
s = '-----\n|' + C[r<2] + ' ' + C[r<4] + '|\n|' + C[r<6]
print(s + C[1-r&1] + s[::-1])
Demo (owijanie budynek ciąg w funkcji):
>>> import random
>>> def dice(r, C='o '):
... s = '-----\n|' + C[r<2] + ' ' + C[r<4] + '|\n|' + C[r<6]
... print(s + C[1-r&1] + s[::-1])
...
>>> for i in range(1, 7):
... dice(i)
...
-----
| |
| o |
| |
-----
-----
|o |
| |
| o|
-----
-----
|o |
| o |
| o|
-----
-----
|o o|
| |
|o o|
-----
-----
|o o|
| o |
|o o|
-----
-----
|o o|
|o o|
|o o|
-----
to właśnie Szukałem. Dziękuję Ci –