B-I-1.1

načítanie reťazca

In [1]:
s = input() #nacitanie retazca
+-+-+-+-++
In [2]:
for z in s: #pre vsetky pismena v retazci
    print(z)
+
-
+
-
+
-
+
-
+
+
In [3]:
for i in range(len(s)): #indexovanie od nuly
    print(s[i])
+
-
+
-
+
-
+
-
+
+
In [4]:
print(s[1:3]) #podretazec, usek [od, do) zlava uzavrety interval
-+
In [5]:
def da_sa_prejst(): #vrati True/ano, ak sa da prejst
    for i in range(0, len(s)-1): #prechadzame po dvojiciach
        if s[i:i+2] == "--":    
            return False
    return True
print("Da sa" if da_sa_prejst() else "Neda sa")
Da sa

B-I-1.2

In [6]:
s = '+++-+++'
#postupne skaceme co najdalej a pocitame si kroky
poz = -1 #zaciname na lavom brehu
skokov = 0 #pocet skokov
while (poz < len(s)-2): #ak este nie sme na konci (posledne 2 kamene)
    print(poz, skokov)
    #skusime urobit dalsi skok
    if poz+2 < len(s) and s[poz+2] == '+':
        poz += 2 #zvysime poziciu o 2
        skokov += 1 # zvysime pocet skokov
    elif poz+1 < len(s) and s[poz+1] == '+':
        poz += 1 #zvysime poziciu o 1
        skokov += 1 # zvysime pocet skokov
    else:
        print("Neda sa")
        break #ukonci cyklus while
print("Pocet skokov:", 1+skokov)
-1 0
1 1
2 2
4 3
Pocet skokov: 5

Počítanie minimálneho počtu skokov pre každý kameň.

In [7]:
s = '+++-+++' 
n = len(s) #pocet kamneov
ps = [ 9999 for _ in range(n)] #vytvorime si zoznam/pole hodnot 
if s[0] == "+":
    ps[0] = 1 #vieme skocit na jeden skok
if s[1] == "+":
    ps[1] = 1 #vieme skocit na jeden skok
for i in range(2, n): #vypocitame hodnoty pre vsetky kamene od 2 po n-1
    if s[i] == '+': #ak vieme skocit na kamen i
        ps[i] = 1+min(ps[i-1], ps[i-2]) #jeden skok bud z kamena i-1 alebo i-2
print(ps)
print("Vysledok:", 1+min(ps[n-1], ps[n-2]))
[1, 1, 2, 9999, 3, 4, 4]
Vysledok: 5