{"id":"informatyka-2015-czerwiec-matura-rozszerzona-2/zad/6.3","paper_id":"informatyka-2015-czerwiec-matura-rozszerzona-2","number":"6.3","points":null,"ptype":"open","subject":"informatyka","category":"matura","year":2015,"month":"czerwiec","level":"rozszerzona","text":"Zadanie 6.3. (0-3)\ndla każdej liczby N z pliku kody.txt, jej kod w systemie Standard Code 25.\nWszystkie pliki wynikowe do tego zadania powinny mieć po 500 wierszy.\nDo oceny oddajesz:\n• pliki tekstowe kody1.txt, kody2.txt, kody3.txt zawierające odpowiedzi\ndo poszczególnych zadań.\n• plik(i) zawierający(e) komputerową realizację Twoich obliczeń:\nMIN_1R\nBRUDNOPIS (nie podlega ocenie)","answer":"pełny kod kreskowy: START + kody cyfr + kod cyfry kontrolnej + STOP","answer_text":null,"solution":"Program (Python) tworzący pełny kod Standard Code 25 (START + kody cyfr liczby N + kod cyfry kontrolnej + STOP) dla każdej liczby N, zapisujący wynik do kody3.txt. Zweryfikowany na przykładzie z treści zadania.\n\nCODES = {\n'0': '10101110111010', '1': '11101010101110', '2': '10111010101110',\n'3': '11101110101010', '4': '10101110101110', '5': '11101011101010',\n'6': '10111011101010', '7': '10101011101110', '8': '11101010111010',\n'9': '10111010111010',\n}\nSTART = '11011010'\nSTOP = '11010110'\n\ndef sums(n):\n# n: string of digits, pozycja 0 = cyfra jednostek (najmniej znacząca, od prawej)\neven_sum = sum(int(c) for i, c in enumerate(reversed(n)) if i % 2 == 0)\nodd_sum = sum(int(c) for i, c in enumerate(reversed(n)) if i % 2 == 1)\nreturn even_sum, odd_sum\n\ndef check_digit(n):\neven_sum, odd_sum = sums(n)\nr = (even_sum * 3 + odd_sum) % 10\nreturn (10 - r) % 10\n\nwith open('kody.txt') as f:\nnumbers = [line.strip() for line in f if line.strip()]\n\nwith open('kody1.txt', 'w') as out1, open('kody2.txt', 'w') as out2, open('kody3.txt', 'w') as out3:\nfor n in numbers:\neven_sum, odd_sum = sums(n)\nout1.write(f\"{even_sum} {odd_sum}\\n\")\n\nc = check_digit(n)\nout2.write(f\"{c} {CODES[str(c)]}\\n\")\n\nbarcode = START + ''.join(CODES[d] for d in n) + CODES[str(c)] + STOP\nout3.write(barcode + \"\\n\")","image":"img/informatyka-2015-czerwiec-matura-rozszerzona-2/zad-6.3.webp","solution_image":null,"topics":null,"page_from":7,"source":"ai","answer_source":"ai","answer_text_source":null,"solution_source":"ai","text_source":"ocr","source_label":"Informatyka · Matura · czerwiec 2015 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 6.3. (0-3)<br>dla każdej liczby N z pliku kody.txt, jej kod w systemie Standard Code 25.<br>Wszystkie pliki wynikowe do tego zadania powinny mieć po 500 wierszy.<br>Do oceny oddajesz:<br>• pliki tekstowe kody1.txt, kody2.txt, kody3.txt zawierające odpowiedzi<br>do poszczególnych zadań.<br>• plik(i) zawierający(e) komputerową realizację Twoich obliczeń:<br>MIN_1R<br>BRUDNOPIS (nie podlega ocenie)</p>","solutions":[{"source":"ai","label":"AI","kind":"text","html":"<p>Program (Python) tworzący pełny kod Standard Code 25 (START + kody cyfr liczby N + kod cyfry kontrolnej + STOP) dla każdej liczby N, zapisujący wynik do kody3.txt. Zweryfikowany na przykładzie z treści zadania.</p>\n<p>CODES = {<br>&#x27;0&#x27;: &#x27;10101110111010&#x27;, &#x27;1&#x27;: &#x27;11101010101110&#x27;, &#x27;2&#x27;: &#x27;10111010101110&#x27;,<br>&#x27;3&#x27;: &#x27;11101110101010&#x27;, &#x27;4&#x27;: &#x27;10101110101110&#x27;, &#x27;5&#x27;: &#x27;11101011101010&#x27;,<br>&#x27;6&#x27;: &#x27;10111011101010&#x27;, &#x27;7&#x27;: &#x27;10101011101110&#x27;, &#x27;8&#x27;: &#x27;11101010111010&#x27;,<br>&#x27;9&#x27;: &#x27;10111010111010&#x27;,<br>}<br>START = &#x27;11011010&#x27;<br>STOP = &#x27;11010110&#x27;</p>\n<p>def sums(n):<br># n: string of digits, pozycja 0 = cyfra jednostek (najmniej znacząca, od prawej)<br>even_sum = sum(int(c) for i, c in enumerate(reversed(n)) if i % 2 == 0)<br>odd_sum = sum(int(c) for i, c in enumerate(reversed(n)) if i % 2 == 1)<br>return even_sum, odd_sum</p>\n<p>def check_digit(n):<br>even_sum, odd_sum = sums(n)<br>r = (even_sum * 3 + odd_sum) % 10<br>return (10 - r) % 10</p>\n<p>with open(&#x27;kody.txt&#x27;) as f:<br>numbers = [line.strip() for line in f if line.strip()]</p>\n<p>with open(&#x27;kody1.txt&#x27;, &#x27;w&#x27;) as out1, open(&#x27;kody2.txt&#x27;, &#x27;w&#x27;) as out2, open(&#x27;kody3.txt&#x27;, &#x27;w&#x27;) as out3:<br>for n in numbers:<br>even_sum, odd_sum = sums(n)<br>out1.write(f&quot;{even_sum} {odd_sum}\\n&quot;)</p>\n<p>c = check_digit(n)<br>out2.write(f&quot;{c} {CODES[str(c)]}\\n&quot;)</p>\n<p>barcode = START + &#x27;&#x27;.join(CODES[d] for d in n) + CODES[str(c)] + STOP<br>out3.write(barcode + &quot;\\n&quot;)</p>"}]}