pomoc kod zadatka

Koki007 nas uvodi u svijet Pythona i PyGamea!

Moderator: Danijel Korent

Post Reply
User avatar
Syrus
Posts: 53
Joined: Sun Oct 05, 2008 11:25 pm

pomoc kod zadatka

Post by Syrus » Fri Apr 09, 2010 4:51 pm

Pozdrav, trebao bih pomoć kod ovog zadatka, mozgam oko njega vec neko vrijeme ali nikako da proadi. Zadatak glasi:
Napišite algoritam koji će generirati kontrolnu matricu za Hammingov kod Ham(r, q).
Uglavnom za binarni kod Ham(r, 2) to nije problem, jer matrica sadrži po stupcima rastuće binarne brojeve.
Problem je kod drugih baza, recimo ternarne, jer treba izbaciti sve brojeve koji u ternarnom zapisu predstavljaju kolinearne vektore, npr:
{0,0,1} i {0,0,2} ili {1,1,0} i {2,2,0}, tu još ulaze i {1,0,2} i {2,0,1} koji također ne smiju biti u matrici, iako ne znam zbog kojeg razloga.
Uglavnom imam napravljen kod koji uspješno izgenerira sve brojeve u bilo kojoj bazi, ali dio koji treba izbacivati viškove ne radi.
Ideja je bila da ako vektor ima 3 koordinate {a,b,c} i drugi vektor ima {d,e,f} tada su oni kolinearni ako a/d=b/e=c/f.

Napomena: python koristim par sati

Code: Select all

import string



def base10toN(num,n):

    num_rep={10:'a',

         11:'b',

         12:'c',

         13:'d',

         14:'e',

         15:'f',

         16:'g',

         17:'h',

         18:'i',

         19:'j',

         20:'k',

         21:'l',

         22:'m',

         23:'n',

         24:'o',

         25:'p',

         26:'q',

         27:'r',

         28:'s',

         29:'t',

         30:'u',

         31:'v',

         32:'w',

         33:'x',

         34:'y',

         35:'z'}

    new_num_string=''

    current=num

    while current!=0:

        remainder=current%n

        if 36>remainder>9:

            remainder_string=num_rep[remainder]

        elif remainder>=36:

            remainder_string='('+str(remainder)+')'

        else:

            remainder_string=str(remainder)

        new_num_string=remainder_string+new_num_string

        current=current/n

    return new_num_string





print

print

print "Program za generiranje kontrolne matrice Hammingovog koda Ham(r,q)"

red=int(raw_input("Unesi pozitivan cijeli broj (r): "))

q=int(raw_input("Unesi pozitivan cijeli broj (q): "))

#stup=((q ** red)-1)/(q-1)                            #broj stupaca filtrirane matrice

stup=((q ** red)-1)                                   #broj stupaca matrice sa svim brojevima



i=1

H={}



while i<=stup:                                        #petlja po stupcima

    j=1

    H[i]={}

    while j<=red:                                     #petlja po redcima

        b=base10toN(i,q)

        b=string.zfill(b, red)

        R=1

        """

        if i>1:

            l=1

            D={}

            while l < i:                              #petlja po stupcima za provjeravanje kolinearnosti

                D[l]={}

                u=1

                while u <= red:                       #petlja po redcima za provjeravanje kolinearnosti

                    print b[u-1],

                    print H[l][u]

                    

                    if b[u-1]=="0" or H[l][u]=="0":

                        D[l][u]=float(0)

                    else:

                        D[l][u]=float(b[u-1])/float(H[l][u])

                        #print D[l][u]

                    u+=1

                l+=1

                print

            g=1

            

            while g <= (l-1):

                h=1

                while h <= red:

                    r=1

                    while r<= red:

                        if h<>r:

                            if D[g][h] <> D[g][r]:

                                R=0

                        r+=1

                    h+=1

                g+=1

                """

        if R:

            H[i][j]=b[j-1]                           #zapis znamenki binarnog broja na odg. mjesto

        j+=1

    i+=1

    



print

print "Kontrolna matrica je: ", red , "x", stup

print

k=1

m=1

while m<=red:

    while k<=stup:

        print H[k][m],                                #ispis matrice

        k+=1

    k=1

    print

    m+=1


fps
Starosjedioc!
Posts: 1012
Joined: Sat Sep 06, 2008 1:11 pm
Smallest prime number bigger than 20: 23

Re: pomoc kod zadatka

Post by fps » Fri Apr 09, 2010 5:03 pm

zasto ne koristis razmak kod aritmetickih znakova ako koristis svugdje ili u usporedbi u petljama?
samo me zanima :)



pomogao bi ti rijesiti zadatak ali matematika je problem, da ne kazes da te zajebavan tu

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest