{"id":1975,"date":"2020-12-04T22:34:30","date_gmt":"2020-12-04T21:34:30","guid":{"rendered":"http:\/\/hamspirit.pl\/SQ9MDD\/?p=1975"},"modified":"2020-12-04T22:34:30","modified_gmt":"2020-12-04T21:34:30","slug":"rzymski-system-zapisywania-liczb","status":"publish","type":"post","link":"https:\/\/sq9mdd.hamspirit.pl\/?p=1975","title":{"rendered":"Rzymski system zapisywania liczb"},"content":{"rendered":"<p>W naszym rozwoju cywilizacyjnym mieli\u015bmy r\u00f3\u017cne pomys\u0142y na zapisywanie liczb. Podczas zabawy z Pythonem postanowi\u0142em zmierzy\u0107 si\u0119 z jakim\u015b realnym problemem, i pad\u0142o na Liczby po rzymsku.<\/p>\n<p><!--more--><\/p>\n<p>Zacznijmy od pocz\u0105tku. Zasadniczo to wiedza szkolna ale dla przypomnienia. Do zapisywania liczb rzymianie u\u017cywali symboli kt\u00f3re zapisa\u0142em poni\u017cej wraz z ich warto\u015bci\u0105:<\/p>\n<pre>I - 1\nV - 5\nX - 10\nL - 50\nC - 100\nD - 500\nM - 1000\n<\/pre>\n<p>Zasady zapisu liczb s\u0105 proste:<br \/>\n1. Cyfry I, X, C, M mog\u0105 wyst\u0119powa\u0107 w maksymalnej ilo\u015bci trzech identycznych ko\u0142o siebie.<br \/>\n2. Cyfry V,L,D nie mog\u0105 s\u0105siadowa\u0107.<br \/>\n3. Cyfry zapisujemy od lewej do prawej w porz\u0105dku malej\u0105cym z wyj\u0105tkiem liczb: 9 (IX), 40 (XV), 400 (CD), 900 (CM).<\/p>\n<p>Osoby spostrzegawcze wywnioskuj\u0105 \u017ce maksymaln\u0105 warto\u015b\u0107 jak\u0105 mo\u017cna zapisa\u0107 za pomoc\u0105 tego systemu to 3999.<br \/>\nZapiszmy teraz rok 1973 rozbijaj\u0105c go na tysi\u0105ce, setki, dziesi\u0105tki i jednostki:<\/p>\n<pre>1000 - M\n900 - CM\n70 - LXX\n3 - III\n<\/pre>\n<p>Po z\u0142o\u017ceniu dostajemy: MCMLXXIII<br \/>\nPrawda \u017ce proste?<br \/>\nTo teraz ogarnijmy to programowo.<\/p>\n<p>Najpierw zaczn\u0119 od przygotowania tablic zawieraj\u0105cych warto\u015bci jednostek, dziesi\u0105tek, setek i tysi\u0119cy.<\/p>\n<pre>roman_table_jedn = [\"I\",\"II\",\"III\",\"IV\",\"V\",\"VI\",\"VII\",\"VIII\",\"IX\"]\nroman_table_dzie = [\"X\",\"XX\",\"XXX\",\"XL\",\"L\",\"LX\",\"LXX\",\"LXXX\",\"XC\"]\nroman_table_setk = [\"C\",\"CC\",\"CCC\",\"CD\",\"D\",\"DC\",\"DCC\",\"DCCC\",\"CM\"]\nroman_table_tysi = [\"M\",\"MM\",\"MMM\"]\n<\/pre>\n<p>Nast\u0119pnie za pomoc\u0105 dzielenia bez reszty wyci\u0105gam z liczby kt\u00f3r\u0105 przetwarzam kolejne warto\u015bci.<\/p>\n<pre>input_int_tysi = (input_int \/ 1000) - 1\ninput_int_setk = ((input_int % 1000) \/ 100) -1\ninput_int_dzie = ((input_int % 100) \/ 10) -1\ninput_int_jedn = ((input_int % 100) % 10) - 1\n<\/pre>\n<p>Tak obliczamy warto\u015b\u0107 dla ka\u017cdego rz\u0119du warto\u015bci a nast\u0119pnie obni\u017camy j\u0105 o jeden, by wyci\u0105gn\u0105\u0107 je z tablic.\u00a0 A w tablicach liczymy od zera.<\/p>\n<p>Gotowa funkcja wygl\u0105da tak:<\/p>\n<pre>def to_roman(input_int=1):\n\u00a0\u00a0\u00a0\u00a0roman_table_jedn = [\"I\",\"II\",\"III\",\"IV\",\"V\",\"VI\",\"VII\",\"VIII\",\"IX\"]\n\u00a0\u00a0\u00a0\u00a0roman_table_dzie = [\"X\",\"XX\",\"XXX\",\"XL\",\"L\",\"LX\",\"LXX\",\"LXXX\",\"XC\"]\n\u00a0\u00a0\u00a0\u00a0roman_table_setk = [\"C\",\"CC\",\"CCC\",\"CD\",\"D\",\"DC\",\"DCC\",\"DCCC\",\"CM\"]\n\u00a0\u00a0\u00a0\u00a0roman_table_tysi = [\"M\",\"MM\",\"MMM\"]\n\u00a0\u00a0\u00a0\u00a0if(input_int &lt; 1 or input_int &gt; 3999):\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return\n\u00a0\u00a0\u00a0\u00a0else:\n\u00a0\u00a0\u00a0\u00a0    input_int_tysi = (input_int \/ 1000) - 1\n\u00a0\u00a0\u00a0\u00a0    input_int_setk = ((input_int % 1000) \/ 100) -1\n\u00a0\u00a0\u00a0\u00a0    input_int_dzie = ((input_int % 100) \/ 10) -1\n\u00a0\u00a0\u00a0\u00a0    input_int_jedn = ((input_int % 100) % 10) - 1\n\u00a0\u00a0\u00a0\u00a0    return roman_table_tysi[input_int_tysi] + roman_table_setk[input_int_setk] + roman_table_dzie[input_int_dzie] + roman_table_jedn[input_int_jedn]\n<\/pre>\n<p>Tak przygotowana funkcja po wywo\u0142aniu zamienia warto\u015bci z zakresu od 1 do 3999 na zapis rzymski.<\/p>\n<p>&nbsp;<\/p>\n<p>R.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W naszym rozwoju cywilizacyjnym mieli\u015bmy r\u00f3\u017cne pomys\u0142y na zapisywanie liczb. Podczas zabawy z Pythonem postanowi\u0142em zmierzy\u0107 si\u0119 z jakim\u015b realnym problemem, i pad\u0142o na Liczby po rzymsku.<\/p>\n","protected":false},"author":2,"featured_media":1650,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,22],"tags":[],"class_list":["post-1975","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algorytmy","category-software"],"_links":{"self":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/posts\/1975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1975"}],"version-history":[{"count":0,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/posts\/1975\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=\/wp\/v2\/media\/1650"}],"wp:attachment":[{"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sq9mdd.hamspirit.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}