Advertisement
Doda94

Untitled

Dec 10th, 2023
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.45 KB | None | 0 0
  1. ## [DIGLOG] 4. Labos, Simulacijski (2015/16)
  2. ##
  3. ## Skripta za izradu tablice potpunog zbrajala.
  4. ## By: DrinkingBuddy;
  5. ## LICENSE: GPL v3 license (http://www.gnu.org/licenses/gpl-3.0.txt)
  6.  
  7.  
  8.  
  9.  
  10. ## Output file di ce izaci sva rjesenja
  11. f = file('dlab_02-2.txt', 'w')
  12.  
  13. ## Tablica koja drzi kod
  14. kod = [0 for x in xrange(4)]
  15.  
  16. ## Tablica koja ce drzati sve
  17. tablica = [[0 for x in range(33)] for x in range(12)]
  18.  
  19. ## Vraca binarnu vrijednost znamenke u kodu
  20. def dekoder(broj):
  21.     for rijec in kod:
  22.         if str(broj) == str(rijec):
  23.             binkod = str(bin(broj))
  24.             return binkod
  25.  
  26. ## Pronalazi broj i stavlja ga u kodni oblik
  27. def koder(broj):
  28.     if str(kod[0]) == str(broj):
  29.         return '00'
  30.     elif str(kod[1]) == str(broj):
  31.         return '01'
  32.     elif str(kod[2]) == str(broj):
  33.         return '10'
  34.     else:
  35.         return '11'
  36.  
  37. def izradikodnutablicu():
  38.     # Punjenje kodne tablice
  39.     kod[0] = raw_input('Upisite znamenku koja pribada binarnom kodu "00": ')
  40.     kod[1] = raw_input('Upisite znamenku koja pribada binarnom kodu "01": ')
  41.     kod[2] = raw_input('Upisite znamenku koja pribada binarnom kodu "10": ')
  42.     kod[3] = raw_input('Upisite znamenku koja pribada binarnom kodu "11": ')
  43.  
  44. def izraditablicu(kodnatablica):
  45.  
  46.     tablica[0][0] = 'a1'
  47.     tablica[1][0] = 'a2'
  48.     tablica[2][0] = 'b1'
  49.     tablica[3][0] = 'b2'
  50.     tablica[4][0] = 'ci'
  51.  
  52.     tablica[5][0] = 'a'
  53.     tablica[6][0] = 'b'    
  54.     tablica[7][0] = 'c'
  55.  
  56.     tablica[8][0] = 'a+b+c'
  57.  
  58.     tablica[9][0] = 'r1'
  59.     tablica[10][0] = 'r0'
  60.     tablica[11][0] = 'co'
  61.  
  62.     ## Punjenje tablice
  63.     for x in xrange(32):
  64.  
  65.         ## Punjene binarnog signala a0, a1, b0, b1, ci
  66.         xbin = bin(x)
  67.         xbin = str(xbin)
  68.  
  69.         if x < 2:
  70.             tablica[0][x + 1] = 0
  71.             tablica[1][x + 1] = 0
  72.             tablica[2][x + 1] = 0
  73.             tablica[3][x + 1] = 0
  74.             tablica[4][x + 1] = xbin[2]
  75.         elif x < 4:
  76.             tablica[0][x + 1] = 0
  77.             tablica[1][x + 1] = 0
  78.             tablica[2][x + 1] = 0
  79.             tablica[3][x + 1] = xbin[2]
  80.             tablica[4][x + 1] = xbin[3]
  81.         elif x < 8:
  82.             tablica[0][x + 1] = 0
  83.             tablica[1][x + 1] = 0
  84.             tablica[2][x + 1] = xbin[2]
  85.             tablica[3][x + 1] = xbin[3]
  86.             tablica[4][x + 1] = xbin[4]
  87.         elif x < 16:
  88.             tablica[0][x + 1] = 0
  89.             tablica[1][x + 1] = xbin[2]
  90.             tablica[2][x + 1] = xbin[3]
  91.             tablica[3][x + 1] = xbin[4]
  92.             tablica[4][x + 1] = xbin[5]
  93.         else:
  94.             tablica[0][x + 1] = 1
  95.             tablica[1][x + 1] = xbin[3]
  96.             tablica[2][x + 1] = xbin[4]
  97.             tablica[3][x + 1] = xbin[5]
  98.             tablica[4][x + 1] = xbin[6]
  99.  
  100.         ## Punjenje s vrijednostima od a, b, c
  101.         a0 = tablica[0][x + 1]
  102.         a1 = tablica[1][x + 1]
  103.         b0 = tablica[2][x + 1]
  104.         b1 = tablica[3][x + 1]
  105.         ci = tablica[4][x + 1]
  106.  
  107.  
  108.         if str(a0) == '0' and str(a1) == '0':
  109.             tablica[5][x + 1] = kod[0]
  110.         elif str(a0) == '0' and str(a1) == '1':
  111.             tablica[5][x + 1] = kod[1]
  112.         elif str(a0) == '1' and str(a1) == '0': ## U v3 uvijet je bio str(a0) == '0' and str(a1) == '0'
  113.             tablica[5][x + 1] = kod[2]
  114.         else:
  115.             tablica[5][x + 1] = kod[3]
  116.  
  117.         if str(b0) == '0' and str(b1) == '0':
  118.             tablica[6][x + 1] = kod[0]
  119.         elif str(b0) == '0' and str(b1) == '1':
  120.             tablica[6][x + 1] = kod[1]
  121.         elif str(b0) == '1' and str(b1) == '0':
  122.             tablica[6][x + 1] = kod[2]
  123.         else:
  124.             tablica[6][x + 1] = kod[3]
  125.  
  126.  
  127.         tablica[7][x + 1] = ci
  128.  
  129.  
  130.         ## Punjenje s vrijednosti a+b+c
  131.         tablica[8][x + 1] = int(tablica[5][x + 1]) + int(tablica[6][x + 1]) + int(tablica[7][x + 1])
  132.  
  133.  
  134.         ## Punjenje s vrijednostima r0, r1, co
  135.         suma = tablica[8][x + 1]
  136.         modsuma = tablica[8][x + 1] % 4
  137.  
  138.         tablica[9][x + 1] = koder(modsuma)[0]
  139.         tablica[10][x + 1] = koder(modsuma)[1]
  140.  
  141.         if suma > 3:
  142.             tablica[11][x + 1] = 1
  143.  
  144.  
  145. ## Izrada citljivog formata
  146. def napravioutput():
  147.     f.write('Vasa kodna tablica je:\n\n')
  148.     f.write('Kodna Rijec | Znamenka\n')
  149.     f.write('----------------------\n')
  150.     f.write(' 00         | ' + str(kod[0]) + '\n')
  151.     f.write(' 01         | ' + str(kod[1]) + '\n')
  152.     f.write(' 10         | ' + str(kod[2]) + '\n')
  153.     f.write(' 11         | ' + str(kod[3]) + '\n\n\n')
  154.  
  155.     f.write('Tablica vaseg potunog zbrajala je:\n\n')
  156.  
  157.     line = ''
  158.     for x in xrange(5):
  159.         line += str(tablica[x][0]) + ' '
  160.     line += '| '
  161.     for x in xrange(3):
  162.         line += str(tablica[x + 5][0]) + ' '
  163.    
  164.     line += '| '
  165.     line += str(tablica[8][0]) + ' | '
  166.     for x in xrange(3):
  167.         line += str(tablica[x + 9][0]) + ' '
  168.    
  169.     f.write(line + '\n')
  170.  
  171.     f.write('----------------------------------------\n')
  172.  
  173.     for y in xrange(32):
  174.         line = ''
  175.         for x in xrange(5):
  176.             line += ' ' + str(tablica[x][y + 1]) + ' '
  177.         line += '| '
  178.         for x in xrange(3):
  179.             line += str(tablica[x + 5][y + 1]) + ' '
  180.         line += '| '
  181.         line += '  ' + str(tablica[8][y + 1]) + '   | '
  182.         for x in xrange(3):
  183.             line += ' ' + str(tablica[x + 9][y + 1]) + ' '
  184.         f.write(line + '\n')
  185.  
  186.     f.write('\n\nFunkcije su vam:\n')
  187.  
  188.     funk = ''
  189.     for y in range(32):
  190.         if str(tablica[11][y+1]) == str(1):
  191.             funk += str(y) + ','
  192.    
  193.     f.write('\nco(a1, a2, b1, b2, ci) = suma_minterma(' + funk + ')\n')
  194.  
  195.     funk = ''
  196.     for y in range(32):
  197.         if str(tablica[9][y+1]) == str(1):
  198.             funk += str(y) + ','
  199.    
  200.     f.write('\nr1(a1, a2, b1, b2, ci) = suma_minterma(' + funk + ')\n')
  201.  
  202.     funk = ''
  203.     for y in range(32):
  204.         if str(tablica[10][y+1]) == str(1):
  205.             funk += str(y) + ','
  206.    
  207.     f.write('\nr0(a1, a2, b1, b2, ci) = suma_minterma(' + funk + ')\n')
  208.    
  209.     f.close()
  210.  
  211. def main():
  212.     izradikodnutablicu()
  213.     izraditablicu(kod)
  214.     napravioutput()
  215.     print('Uspjesno izvrseno!\n'
  216.           'Pogledajte file "dlab_02-2.txt" koji se nalazi u direkotoriju di ste pokrenuli ovu skripu.\n'
  217.           'Preporucavam da sami provijerite output, ova skripta ne garantira tocnost'
  218.           'Ako nadzete gresku UPOZORITE druge na gresku i ako znate pokusajte ju popraviti.')
  219.  
  220.  
  221. if __name__ == '__main__':
  222.     main()
  223.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement