from microbit import *

# Binære tal tælles altid fra 0
# Binære tal representeres med 0-ere og 1-ere - Derfor også kaldet 2-talssystem
# Binære tal læses altid fra højre mod venstre i følgende orden:
# 16-ere, 8-ere, 4-ere, 2-ere og 1-ere
# Et eksempel for værdien 13 oversat til binær
# 0 16-ere, 1 8-er, 1 4-er, 0 2-ere, 1 1-er
# |         |       |       |        |
# 0         1       1       0        1 = 01101 = 1 + 4 + 8 = 13

def get_binær(n):
    bin_nummer = "00000:00000:00000:00000:00000"
    # Vi starter med at formatere vores binære streng til 5 karakterer (5 led), hvilket giver n = max 31
    # f.eks. hvis n er 10, bliver den binære værdi til "0b01010"
    bin_num = bin(n).format(n, '25b')

    # Vi fjerner "0b" fra strengen
    # Herved bliver strengen til "01010"
    # bin_nummer = "".join(reversed(bin_num[2:]))
    bin_nummer = bin_num[2:]

    for idx, n in enumerate(bin_nummer):
        if idx % 5 == 0:
            if idx == len(bin_nummer):
                break
            bin_nummer = bin_nummer[idx:] + ":" + bin_nummer[:idx]
    # Vi erstatter "1" med "9", og tilføjer ":" og returnerer den nye streng
    # Den returnerede streng bliver "09090:"
    return bin_nummer.replace("1", "9")

def bin_taeller_v2():
    for bb in range(100):
        display.show(Image(get_binær(bb)))
        sleep(100) #sov 0.1 sekund

BINÆR_DATA = {
    0: "00000:", 1: "00009:", 2: "00090:", 3: "00099:", 4: "00900:", 5: "00909:",
    6: "00990:", 7: "00999:", 8: "09000:", 9: "09009:", 10: "09090:", 11: "09099:",
    12: "09900:", 13: "09909", 14: "09990:", 15: "09999:", 16: "90000:", 17: "90009:",
    18: "90090:", 19: "90099:", 20: "90900:", 21: "90909:", 22: "90990:", 23: "90999:",
    24: "99000:", 25: "99009:", 26: "99090:", 27: "99099:", 28: "99900:", 29: "99909:",
    30: "99990:", 31: "99999:"
    }

def binaer(n):
    return BINÆR_DATA[n]+"00000:00000:00000:00000"

def bin_taeller_v1():
    for b in range(32):
        display.show(Image(binaer(b)))
        sleep(100) #sov 0.1 sekund