From bad4c1eb29cb42ac8bdb659f774592d7489a0218 Mon Sep 17 00:00:00 2001 From: "alessandro.rabiti" Date: Tue, 1 Apr 2025 19:15:01 +0200 Subject: [PATCH] feat: aggiungo parte1 e parte2 di 04_aeolian_transmissions --- 03_supplies_in_surplus/README.md | 65 ++++++++++++ 03_supplies_in_surplus/part2.py | 49 +++++++++ 03_supplies_in_surplus/part3.py | 70 ++++++++++++ .../__pycache__/data.cpython-313.pyc | Bin 0 -> 324 bytes 04_aeolian_transmissions/data.py | 100 ++++++++++++++++++ 04_aeolian_transmissions/part1.py | 18 ++++ 04_aeolian_transmissions/part2.py | 50 +++++++++ 7 files changed, 352 insertions(+) create mode 100644 03_supplies_in_surplus/part2.py create mode 100644 03_supplies_in_surplus/part3.py create mode 100644 04_aeolian_transmissions/__pycache__/data.cpython-313.pyc create mode 100644 04_aeolian_transmissions/data.py create mode 100644 04_aeolian_transmissions/part1.py create mode 100644 04_aeolian_transmissions/part2.py diff --git a/03_supplies_in_surplus/README.md b/03_supplies_in_surplus/README.md index 4810a29..c5b9b4b 100644 --- a/03_supplies_in_surplus/README.md +++ b/03_supplies_in_surplus/README.md @@ -36,3 +36,68 @@ For example, consider the (smaller) inventory list below: The first range, 8-9, contains 2 boxes. The second range, 9-10, contains 2 boxes. The third range, 7-8, contains 2 boxes. The fourth range, 8-10, contains 3 boxes. By continuing this process, we can determine that the total number of boxes (for this file) is 43. Considering your file, what is the total number of boxes in all of the piles? + + +Part 2 +Difficulty Rating: 2 + +The calculation was correct, but there are noticeably fewer piles than expected… You’ll just ask the captain about this. + +“Oh, he must’ve misremembered. Each line in the file actually represents one pile.” + +Ah, a miscommunication. Apparently, both ranges on a line represent one pile. That’s alright, as you still have some time. + +The captain tells you that if a number is in any of the ranges on a line, then that pile contains one box labelled with that number. For example: + + + A pile represented by 6-8 8-10 contains 5 boxes (labelled 6, 7, 8, 9, and 10). + + A pile represented by 5-6 7-8 contains 4 boxes (labelled 5, 6, 7, and 8). + + A pile represented by 3-4 7-8 contains 4 boxes (labelled 3, 4, 7, and 8). + + +You’ll still have to figure out the total number of boxes in all of the piles combined. + +For example, consider the same sample inventory list: + +8-9 9-10 +7-8 8-10 +9-10 5-10 +3-10 9-10 +4-8 7-9 +9-10 2-7 + + +The first pile, represented by 8-9 9-10, will contain 3 boxes (labelled 8, 9, and 10). The second pile contains 4 boxes (labelled 7, 8, 9, and 10). The third pile contains 6 boxes, the fourth pile contains 8 boxes, the fifth pile contains 6 boxes, and the sixth pile contains 8 boxes. So, for this file, there will be 35 boxes in total. + +Considering your file, what is the total number of boxes in all of the piles? + +Part 3 +Difficulty Rating: 3 + +You send the calculation to the lab, and they confirm that none of the boxes have gone missing in transmission. Great! + +Due to space constraints, you’ll only be able to load two piles of supply boxes onto the ship. As boxes with the same label contain the same items, you should take as many uniquely labelled boxes as possible. + +Suddenly, the captain calls out to you. + +“We’re short on time! We’ll only be able to load two piles that are adjacent to each other!” + +You observe your surroundings: the piles of boxes are already arranged in a single line. The first line in the file represents the first pile, the second line in the file represents the second pile, and so on. + +As you are short on time, you’ll have to find the maximum number of uniquely labelled boxes in two adjacent piles. + +For example, consider the same sample inventory list: + +8-9 9-10 +7-8 8-10 +9-10 5-10 +3-10 9-10 +4-8 7-9 +9-10 2-7 + + +There are 4 uniquely labelled boxes when pile 1 and pile 2 are combined. There are 6 uniquely labelled boxes when pile 2 and pile 3 are combined. Continuing the process, there are 8 when pile 3 and pile 4 are combined, 8 when pile 4 and pile 5 are combined, and 9 when pile 5 and pile 6 are combined. So, the maximum number of uniquely labelled boxes in two adjacent piles (for this file) is 9. + +Considering your file, what is the maximum number of uniquely labelled boxes in two adjacent piles? diff --git a/03_supplies_in_surplus/part2.py b/03_supplies_in_surplus/part2.py new file mode 100644 index 0000000..b482486 --- /dev/null +++ b/03_supplies_in_surplus/part2.py @@ -0,0 +1,49 @@ +import data + +# splitto la lista data per togliere gli spazi e gli "a capo" +split = data.l.splitlines() + +# aggiungo una variabile per sommare i range +somma = 0 + + +for i in split: + # splitto nuovamente per non avere il carattere - e separare i due numeri + splot = i.split(" ") + # definisco due nuove variabili per splittare le due stringhe + asplot = [] + bsplot = [] + # associo alle due nuove stringhe i valori + asplot = splot[0] + bsplot = splot[1] + # definisco le variabili per splittare i quattro valori di ogni stringa + alfa = 0 + beta = 0 + gamma = 0 + delta = 0 + # associo ad ogni variabile uno dei quattro numeri dei due range + alfa = int(asplot.split("-")[0]) + beta = int(asplot.split("-")[1]) + gamma = int(bsplot.split("-")[0]) + delta= int(bsplot.split("-")[1]) + # creo due liste vuote + boxes1 = [] + boxes2 = [] + # associo alle due liste tutti i valori dei due range + boxes1 = list(range(alfa,beta+1)) + boxes2 = list(range(gamma,delta+1)) + # creo una copia della prima lista + new_boxes = boxes1 + # per ogni elemento della seconda lista, che non e' presente nella prima lista, + # lo aggiungo a new_boxes + for i in boxes2: + new_boxes.append(i) + # rimuovo eventuali numeri duplicati + no_duplicates_boxes = list(set(new_boxes)) + # ordino dal minore al maggiore + sort_boxes = sorted(no_duplicates_boxes) + + # aggiungo alla variabile somma, il valore della linghezza della lista ottenuta + somma += len(sort_boxes) + +print ("Result :", somma) diff --git a/03_supplies_in_surplus/part3.py b/03_supplies_in_surplus/part3.py new file mode 100644 index 0000000..769ee1f --- /dev/null +++ b/03_supplies_in_surplus/part3.py @@ -0,0 +1,70 @@ +import data + +# splitto la lista data per togliere gli spazi e gli "a capo" +split = data.l.splitlines() + +# aggiungo una variabile per sommare i range +somma = 0 + +# aggiungo una variabile per fare una lista di liste +listona = [] + +# aggiungo variabile per calcolo lunghezza massima +max_len = 0 + + +for i in split: + # splitto nuovamente per non avere il carattere - e separare i due numeri + splot = i.split(" ") + # definisco due nuove variabili per splittare le due stringhe + asplot = [] + bsplot = [] + # associo alle due nuove stringhe i valori + asplot = splot[0] + bsplot = splot[1] + # definisco le variabili per splittare i quattro valori di ogni stringa + alfa = 0 + beta = 0 + gamma = 0 + delta = 0 + # associo ad ogni variabile uno dei quattro numeri dei due range + alfa = int(asplot.split("-")[0]) + beta = int(asplot.split("-")[1]) + gamma = int(bsplot.split("-")[0]) + delta= int(bsplot.split("-")[1]) + # creo due liste vuote + boxes1 = [] + boxes2 = [] + # associo alle due liste tutti i valori dei due range + boxes1 = list(range(alfa,beta+1)) + boxes2 = list(range(gamma,delta+1)) + # creo una copia della prima lista + new_boxes = boxes1 + # per ogni elemento della seconda lista, che non e' presente nella prima lista, + # lo aggiungo a new_boxes + for l in boxes2: + new_boxes.append(l) + # rimuovo eventuali numeri duplicati + no_duplicates_boxes = list(set(new_boxes)) + # ordino dal minore al maggiore + sort_boxes = sorted(no_duplicates_boxes) + # aggiungo la lista di ogni riga ad una lista (lista di liste) + listona.append(sort_boxes) + # calcolo la lunghezza della lista + len_listona = len(listona) + # se la lunghezza della lista e' != 2 salto + if len_listona == 2: + # creo una variabile temporanea con la lista parzuiale dei numeri + lista_par = [] + # popolo la lista con tutti i numeri della lista di liste + lista_par = sum(listona, []) + # elimino numeri doppi e metto in ordine crescente + lista_par_sort_unic = (sorted(set(lista_par))) + # se nella lista di liste ci sono gia' due elementi (due righe di dati) + # allora elimino il primo elemento + del listona[0] + # se il numero di elementi e' maggiore del caso precedente, allora aggiorno + if len(lista_par_sort_unic) > max_len: + max_len = len(lista_par_sort_unic) + +print ("Result :", max_len) diff --git a/04_aeolian_transmissions/__pycache__/data.cpython-313.pyc b/04_aeolian_transmissions/__pycache__/data.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a556bde9775486137b2c6d987a0dd5537f805cc9 GIT binary patch literal 324 zcmey&%ge<81g$GxrKbYv#~=<2FhUuhC4h{n3^5D}3^9yA%ml>DK+K}Rkj|jV=%>kg zOTy33DKr=aT!Mq6fWQ|DZV3g1J32ZBM>+)s1-U}NEkQRYCx16LH*XghxFr(i<>=_= z9N_Kk69qO0MBEbe0|O_gFc?_L@EPQ)Tao%1`MIh3i8-mo#ff<-MfpXENtq>?`Y!p& zrManjCB^!Va4G%d{FKV#;>>s>10z#?1C#i~)cl;x#Ju>DqQt!7+)SWUeqOPDN@7W( zUP0w84x8Nkl+v73yCP7~fC8ad1W0^fW@Kc%$slo)LFguf;7taRTMU9l96$*G=I>h! literal 0 HcmV?d00001 diff --git a/04_aeolian_transmissions/data.py b/04_aeolian_transmissions/data.py new file mode 100644 index 0000000..63cfb9c --- /dev/null +++ b/04_aeolian_transmissions/data.py @@ -0,0 +1,100 @@ +HHPBBBLLLCCCCXXOOOOZZZZZZECCUUUUUUUUUPPPIIIIICCCJGGGBBBBBBBBBBBZZZZZQQQQQQQQPPPPPPPP +XXNNNNNKXXXXXXXXXIIIIIIOOOOOOOCWWWLLLLLAGGGHHHHDDDDDDDRRRFAAAJJOOOOOOOBBBBBCCCCTTUUKERRRRRRIIIIBBBBTTTTTTTTTLLLLMMJJJCCWWWWWWWW +QQQIIIIIIHHEBBTFFFFFFFFIIJJJJHHBBBBBBAAAOOOOOOCCBFFFFFFFGNIIIOOOOOORBBBIIIGGGOIVVVVVOOQQQQXXKKKKSSSSSSSQQQQQQ +RRRRHHHLLLLLLLZZZZBBSSSSSSNNNNNNNIHHHAOOOOXXXBBBBMMMMMMMPPPPAAAAAAAAAAZZZZZZZWWWWWWCCCCJJJJJJJJTTTJJTPPPYKKKKKKGGANNNNCRRRRRRRUUUUUUUUU +PPPPPPPJJJJJJHHHHHHHDDDGGIIIIIIIFEWXXXXXXDDTWWWGGGIIIIILLLLLLLXXXXXXXXX +DDDDDYYYYYYYYYBBBTTTTTTTJCCIIIIIPYUUUUUTTHHMMMMJJJJJMMOOEEEEPPPYYYYKYYYYYYYHHHEEEEEEEEZZSSSSSSVVVVVVVKKKKK +KUUULLKKUUTTTTVVGGFFOFFTTTHHHHHAAAAAAARRRRRRFFFZZZZZZWWWWWPPPWWWWNNNNNNN +XXXXXJJJTTTTTTRRRRCCSIIIIIICCAAAZZZYYYPPPUUUUUUUESSSSSSTPNNMMMMMMXXXFFFSSSSPPPPPMCCCRRRRVVVVVVKFFFEEEFHHHHHQSSSSSSSSS +KKQQQQQEEEENNNNNHHDDDDDDDDIHTTTDDGGGGGCCCEEQQQQQQNNNCCCCCRRRRRNNNNN +DDDDNNNNKKKKKKKEMMMMMLLNXCAVVVGGGGGGGJGGYYYYGGGGGGGG +JJRRBBBPPPPPXXXXXRRRRRRYYYYYPTTTBBSSSLFFIIIIIIIMMIIGDDDDVVCCCCCLLCCCCCCNNNNEEEETTTTTYYYYYOOGGGGVVVVVVVVVVQQQQQQQQ +CYYYYYYRRRRRJJJGOOOOOSSSSSSEIIIIIIDDDDDQUUTQTTTTTTMMMMMCCCCCCSSSSIIGGGLLKKBXXBBEEEEGXXXXBBBBQQQQQAAAAAAAAVVVVVVUUUQQQQQQQQQDDDDRRGGGGGGGUUUU +IIIBHSSSSVVVPPPKKKKKKZHLLGGGGEEIIIJJJJJWWWYYYYYYYYYEEXXXXXXTTTTTXXXUUUKKNNNNNZJUFFFQQQQQOETVVVVVVVFFFFZZYYYHHHHHAFFFFFEEEEEEECBDSSSSSSSSGGPPCCCCCCCGGG +UUUUFFPPPEEKKKKKKKGGGGGJJJJJJJYXXXXXECCCCCNNNNNWWSSSSSBBYYYYYUSLLLLLLZZZZZHHHEEEEOOOOOOOOJJJJJJJPPPPNNNNNNEEEEEEE +SSMMMMMMMMPPPPPPPPUJVVVRRQQQQQNXAAAAYYYFFFFFFFBBBBBBBBOOOO +ZZZZSSSSSSJJJJJJDDDHHHHHRRRRRRKKKKKAAAAHNFFFFSSFFFYTEEDDDHHQQQIXXGGGGBBQXXHHHHFFJJJIIIIIWWWWWWWWWWWWQQAAAAAAVVVVVVVVVRAAAAAAARRRRRRR +NNNNTTTTJJJJJJJJOOOOQQQQEEEFPPPPOOWWUUUUGGGGYEEEEEEGGGGGGNNNNNRRRRJHAAWWWQQSSSSSDDDFFFFFFFFQQQDDDUUUUUUUUJJJJ +XXXLLLAAHHHBBBBIIEEEEEEVVVVVKKKKKKKPPPPPIIIVVZPPFFWWWWWIIIIISSSSPPPJJJJBBBVVBBBBBBBBCOOOOXXXXXXXXMMMMDDDDDIIIIIUUUUMZZZKKKKKKKKJJJJJTTTTTWWWWWWWW +JZIIIUUUUUUUXXXPPPPSSSSSSCNTTTTTTTMMMMMMGDKKOOOZZZQQQGGGGKKKKKKKKDDXBBEEEEEOOOOOOO +MMMMMQSSSQEWWWWTTTTTTTAAAAAHDDDDDDNNQQQQQPPKKYOEEFFFFFFFFRRRRRRRLLLLL +AAAARRRRRRHHHRRRRRRRRHHHHHHHYYYSGGGTTEEEYYLBBBBBBBOOOOOOVVVVGGGGGVKKKKKSXXXXXRRRRRRRR +CCCCCZZZZZZZAAAOOOOOOOOGGGGGGGRRRRRSSSSSCCCFFFFFTSTTTTWIOOOXXXXXXXXYYYAAAAAAEHHHHHHNNNNNYYYKKJJJJJJJRRRRRR +QQQQQQWWDDDDDDUUUUUWWWWWWGGGGSSSSSSUUUUUUUUXXXXQQQHHHHHHHHZZZZZJMMMMMAAANNDDDSSSSSSSAAAAAAAAUUZZZRRLLLLLLLLNNCCCJJJJJFFQQQQQQQQZZZ +RTTTKDDDJAANQQQOOOOJIIIRRRRRREZZZGWWWWWXXGGGGGGGAASSSSSSSKKGGGGGLLTTTTJJJJJJBBBBZZZKKKKFFZZZIIIIDDDRRRBBBBBDDOOOOCDDDDDDDCVVRRRRIDDBBBBBBBGGGGGGGGG +YZUUEEEENNNNNNNNXXXCCVBAAAACCCCCCYPRRRRMMMMCCYYYYYYYY +DDDDDDDDRRRMMMMMSSSEEEEEBKKXXXQQQQQQFFFFBHHHFFFFFFSBBBBBBBBRRRRRRRHHHHHHEEEEEEEBBBBDDDDDDOOOOOO +LLLKKKUUUUUUUWWWWWWSSSTTTTTTGGSCCCCOOPPNNNJJJJKKKOOOOOSSSSSS +PPPPPJJJJWXXXXXXXUUUUUVVVVCCCCUULAAAHHHVVJJJJJJLQQQQEEEEEEEELLLAAAAANNTTIIIVVVVVXXXXXTTTTTTGGGGGGGGGGGGGG +COQQQQGGGGGGEEEEKKKIIIIIIBBBBBBBYYYPQQNVVVVVVVVOVVVVVVVVV +QQQQQQQRCCCUUXXNJJOOLXXXNNNBBBNNNNNNHHHHHMMMMMZZZZZZXXXXXXXXX +WWWWWWWWVVVVVBLLLLLPQQQBBBPPPPUUUUUUUAXMMMMMMMVRRRRRRRRZZZJJJJPPPUUUYYUUUUUUUOOOOOOOO +GGGGGGGUUUAAAOOOOOFFFFFFFRHHHHKKKFFFFVVVVVVVVBBBOJXXXXMMMMMMM +UUUUTTTTTQQQQQQQQNNNNNNNWWVBXXXXXXHHHHDDDDDDDIIOOOUALLLLLKQQQQUEESSSSSSSCCCCCVVVVVVVVWWWOOOFFIIIIIOOOOOUUNNNNNNNNNHHHRRTTTTTAAMMMMMIPPKKKKKKKKK +SLLLLLCCCCCCYYIIIIIIIICCCNQQQXXXXAAAAAAWJJJJJJJCCCCMMMMMZZQQYCCCCCCCDSSSSSGGGLLLLLLL +VVVVVSSSSXXXBBBBOOOXVVVVVVUTHHPWWWWTTTJJJLLLLLLPPPPPPOOUUUUULHHHPPPPPIIIIIIIVVVRRRRRRAAZZZZZZZZZ +YSSFFFFVVBBBBHHMMUXXKKKKIIIIIIGGGGRRRRRRESSSSSSFFFFFFFFFFFFFUUCQQDBBBQIIPJZZZZZZYYYYYYTTTTT +VVVRRRRRRRRJJFFFFFFQQLLLCCCRRRRRROOOOORRRRRRRCBBBBBBBBBGGGGGGLLLLLFFFFEEELLLLWWPPPPMMMAAAAAASSSSSTTNNNNNNPPPPPMMMMMMMMMNNNNNNNN +MDDDFFFFFFVNNNNNNNNFFUUUTTTZZZZZUUUYYYYYYYZZZZZZAAAXXXBBBBBBBUUUUUWWWWWXXXXZUUUUUUUUYYYYYYYQQXXLLLNNNIIIIIIII +TTTTBBBBFFAAQQQCCCCCCVYYUUURRGGGGGGGOOOOOMMMMMMIIIJJJJJJJWWWWQWWWMMVZZZZZZKKKKOOOOAAAAAAAA +HAAAARAADDDDBZZZZBYYFFFSSSSSHHHQQAAYRRRRRRREEEEEECCCCCKKOOOOVVVSCCRRRRRRRRPPPUUUUUNNUUUUUUUVKRRRRIIUUUUUUUTTTTTTTTFFFUUFFMMMMVVVVVV +AAAAAAAAWEEYJSSKKONNNNNDOOOFFJJJTLLLLLLLLLVVVCCCCCCCCGXXXXDDNNNNNUUGLLLLDNNNNNQQQCCCCCYYYYYYYOOOOOHHHHHH +FFFRRRRRFFFQQZZZYYYYYWRRRRHHHOOLLZZZZZPSSSRRRRRBBKKKKKKLWWAAZZZMBBBBLLLLLLLLPPXXXXHBBBBBBTTTTT +PJJGGGGGGGQQQQQQQQQGQQQQAAAAAAAAAARVVVVVVVWWWWWWVVXXKKKKKKKKAAAAAAAFFBBFYYYPPPPPKKKMMMMMMMAIOOOOOOMMXXOOBYCCCCCCCCCOOOOAAAEEXXXXXXXYYYYYMMMMM +XXXXAAAAAAAOOVVIIVVHHHHZZZZZZAAAOOEYYYYWWWWDDKHHSSSSSSSSSLLRRRRRDDDDDQQQQQQQWWWW +QQQSPPQQRHHHHHCCCCCCCUUUZZAAAAAUUUUUUUTTTTEEEEEEEE +JJJIOOOOOOBZZBBBBBBEEXBRRIIIIIIOOOOOTTTTTTTTSSSSSSSPPHHHHHGGGQYYYYYIIIIIIIICCCCCCEEMMMMBBNGGGGGGGGGGXXIUUUUUBBBBBBBBPPPPJJJJJHHHHHHH +PPPBBBYTTTTSSHNNNNNNBBBBBBFFFXDDHHHCCGGOOOYRRRRRSSSSSSKKKXXXGGHHHHHHHEEEKKKKKPPPPPPPPP +TTTNNNNGGGGGGGGKKKAAAAYTTOOOOOOORRRREEADHHHJJJJJJJJJOSSSSKKKKOOOOXTTTYYYYUUUTTTTTTTCCPPCCCCCCCNNNNNKUUUUUUOOOBBBBBPPDDDDFFFFFFFOOOOOYYYYYYYYY +ZSQQJJJJJJTTGGGGXIIIIGGOOOOOOMMMQQQTTTTTTPUUWRRMMMYYYYYYNZZMZKKKKWWWDDJVVSSSSSSSGGGGJAAAAAMMMMMMYYMVVVHHHHHHHHH +IIIIIIIOOOXXXXXXXBBBDDDDDDZZFFFFFFFYYACCCCCCJJJJJJJZBBBBBBBBB +WWWWFFFFXXXXQQQQIBBBBBKKKKQQQQQQQQTTJJVVVVDDYYYYVVVVVVEEEEYYYYCCCCKKKKTKKKKKKUUUUGGGAAAAAAMMMMMMMNNNNNNNXPPCZZZZZBBBBBBBBB +MMMGGGXXZZZZZZZWWWWWQQQBBTJJNNJJJDQQDDDDDDWWWAAWWWWWWWHHHHHHZZZZEEEEEEYYYYYSSSFFFFFFFFGGG +FFFFFFIQQUUUUUUVMMMWWMMMMMMMCCCCCCCAAAAAAOOOOOOOKBBBBBBBBEEUUUUKKKKIIIIIIIISSXXXJJJRRRRRRKVVVVVAAAAZTTTTTTRRRRRRAAAAAUWAANNNNNNNNN +SSSSSSSSYYYJHHAAAAHHHHJJJJJJJJYYYGGGOOOOOOCCCPPPPPPKKKTTTBBBBIIIIIIIXKKSSSSSSSCFFFEEQQQXXXIIIIIIIINNNNNNN +XPPPPPJJJJDDIAAAAAJJJPHHCCCCLLLLESSSSSSREEEAAALLPPPPMMPPPQQQQEEEEEIIIIUUFFFFWWWJZZZZZZZIPPPPPPKOTTTRRRRRYYYYXXXOOOUJBBBBBBBBBBBBNNNNNNNHHHHHHH +EEEEOOOOLNNXSSSNNCCCCCCXHHHHHHHXXXXNNNNNDDDDBOOOOOOOOIIPPMOMVJYYYFFFFPPPPUUIIRRKPPPPCCCCCNNNNNNQQQQQQQPPPPPPIIIITPXCCWWWWWWWWW +UUUUUNNNHHIIDDDDCCZZFFTTTTTTOOOOOMMFFFFFFVVVUYPHHHHHHHPPIIIIIXGPPPPPPBBBB +AACCVVVVVVVVVVVVVVAAAAAARYYGHHHHHHHHHYYYWWWWWWWWHHHHHHCCCCCMUQQQQQIIIIQQVVVVVDDDDAAAWWWDDDDDDDFFFFFFAAAAWWWWWWWEENZOOOOOOOOO +JJJJJJJJBRRRRRRRRGGGGGGVVVVUUUUUUUUJJJTAAARRRXXXXXXXCCCCCCCGGGGGKOOOOOOXXXXXXMMMMMM +TTTTTTTDDDUVVVVVVVPPPPLLLLLLIIIIBBHHBBBCCCTTWAAATTTTTTTSSSSCCCCCEEEFFFFYXXEFFFFFFDNNNNNFFFFFFFFF +WWWWUUZZZZZZKKKKKKCCCCCTZZZZQQQQQEEEKKCAAAAAAAHHHHHHDDDDMMMMZZZYYLLLTTTTTTTBBBBBJJJZJJEJJJAAAAAYYEEEEETTTCWEEJUUHHHAAADDDDDDDKKKKKLLLYYYYYTTTMMMMMMMMM +QQQQQQAWWWWWBVVVVVVVEEEEEQQQQQVRRRRRRRUUUMMLLLLDDDLLLLAAAAAAZMMMNNNDDDDDDSSSSSSSSSSSSJJJJJZZZZZKKKKKKEEEEEESSCCCCCCCCMMAAABBBBBXXOOOOOOOOO +NNDDCZZZZPPPPVVVVUUUVVWWWWGHHHHHHJJJJJJSKKKKKKRRRRRRRRDDDDCCCCCCCCQQQ +PJJZZZZZZCZZZZZZZKKKSSSSSSAAAIIKKLLLLDPPPPPPPWWAAAAAAAAA +PPPBBBBBFXKKIIIIIIIIIIIIIIYAAAAAMMMMOOOOOOMMMMMCCCCSSSSZZZZZZZZZKKKKKNNPPPPPPPLLLLLLLLZZZZZOOOOOMMMMMMMNNNNNVVVVIIIIIII +TRRRRRVVVVUUQQQRRRRRRWWWWWRRVITTVMMMQQIIIIIIIHHNNNNSSSSSSSSS +AAAAAAAPUUUUUURRRRKMMMMMMMUKEEEEEEZXIIDDDDDDDDDDDZGGGGGGGGGGDDDDRRRRQQQQQIIIIVVVVVMMOOOMWWWWWWWUUUFFZZZZZZZMMMMFFFLLOOOOOHHPPPXXXXXXXXXX +CCCCCCCOOOCCCCCCZTTVVVAAAAAFFFFVLLLLLLNNNRRRRRRRRRNNNNNNNIIIYYYYTTTTBBBBBBBLLLLCCCNNNNNNNNN +LLLLLLLLIIIUUUUUYYACCCOORRRJJJJJJGGGGGGTMMMNNNNNNXXRRSSSSSSSSSSSSDDDDDZZZZZGGGGGGGGGEEECCCEWPPPPPPPPP +RRRVVVCCCCCMMMBBBBBBBBCCCTFFFFSSSSSSHHHHHHHNAAAAAJVVVVVMMMMWWWWWWOOOQNNNNNNXXXXBBBBBBBBBCCCCCCZQQEEEEEMMMMMMMM +LLWWQQQLLLLLUUUUULLLLLLTTTTUPPAAAHCCVVFVBBBBBHHHHKKKKKBBBAUUUUOOOOAAAAAAASRRRIYYYFFFFPPPPPPP +KKKKKKNNVVVAAXXXXXGGQQQQQQDDDDZZZZZZZZZHNNNNNNNOOOOOOJJZIIIIFFFRRRRRVVVVEEEGGGBBBBBNNNNNHBBBIIIIVVVVVV +INMMMMMMMWWWWWWWWRRUUUUUUUJJJBBBMMMMMMMMZEEEEEERRRRRBBBTNQQQQQJDBBBBBBAATTTTWWWGGGZZFFFFFFFF +FFFNNNNNNNIIIIIAAAAAAAWWWJJJJJYYYYKFFFFFIIIIIIKKKKWWWWWWRRMMMMMMTTTTTTT +RRRRRRALLLLJJJLDDDDDDDDLMMMHHHHHHHHZZZZZYYYYYYYYZZZZYBBBGGGGGGGGQQQAAAAAAAAAAAA +CCMMMMMMMUUUUUUUUUUUJJYYYYYYYYDDDDDACCCCCCCCCSSEEEBXXXXXXXXXRQVZVVVRTTEEEIIIZZHHHHHNNNNJJJJJJCCCCCLLLLLXXXXXXXXQKKKPIIIIIIIII +VVOOYYWWWWWYYORGJJJJTTTAAAALLLYYYYYYPPESTTTTTTTKKKKKKJJJJJJJ +RCCCWWWWWAXXXXXXXIIIIIIIEEYYYYYIIIMMMMMMMMMOOOOOOOYYYYYYYEBBBBKNNNNNNNVVTTEEEEEPPPPPPPP +KKZPPNNHHDDDDFFFFIICCSSSSSPPPPPPQQQQQQQQUIILLZZZZZZZZZZZZNNWWWWWWWWWIITNNNYXXXXXXXXX +CCCCCCCCCHHHHHHWWWWWWIIINNNNNNXXXXXWWWWKKKKKKBBBTTXPPKKKKJJYYYYYYYTTTTTTT +NNNKNNNNNUUNNNNNYYYGGGGLLLLLLTTTTTGGWWWWWWWWQQQQQQQ +GUUUUCCCCCCCCJWWWOOOOOIIIIEQQQQQQQQQQQQQQQQSSSSMMMMXXNNNNNNKOOZGGGGIIWWWEEEEUUUUUUUGUUNNPBBBCCCCTTTTTTTTTTTTZZZZHHHFFFFTTTTTTTQDNLKKKKKKKKPPPPP +CCCCCXXXXXXXIIIIIIIIRRRUWWWWWWWSSSSSCCCCQQQQQQQQQX +LLLLLIIIWWWWXXXXXXXXXXXXSSSSKKFFPPPPPRRHHHHHEEEGGGOOOLLLLXWWWWWSVVVVVVVWWWWWW +ZZZZZZZZZSSSSSSSQQLLLLLLLIIIIIIDHHHQQBBBBBVVVVVRRRRRRRTXXXXXXXAAAAAAAAAAAAKKKKJJIRRRRBDDDDLYYYYJJJJJEEEEEEE +WWKKKHHHHIQQQQTTFFSPPNNNAAAAAARRRRRRCCCDDDDDWWWWGGGGGGKKVVSSSSSSSSS +FFFFFFXXXSSSSSAAAAADDDDDDDDIIPPPPPPPSSSSSSSKKKKKIXXXPPPPPPPSSSAAAAAAA +CXMMMMMMMAHHHIIIIITTTTTTTDXXXQQKJLLVVZZZDDXXOHHOSSSSSSMMMMMTTTTPPPPPPPPP +QQQQQZZZZZZQPUEXXXXXXXXXYSSOKKKWWWHHHOOJKKPPPNNNNNRBBPPPPPPPPGGGGZZZGGGWWWWWWWWEZZGGGGKVVVNNNNRCCCQQQQQQQQ +VVVVEEEEDDDSSSSSSSSMXNNIIIIXXXXXQQQQQQWWWWWWXXXXXXXXIIIIIIIWWRYYYDDZZZZZZZZZZZZUHHHHAAAAAYYYYYYYIIIZZZZZZOOOOOO +SRSSCCCUUUUUUZZLLLLZZERRRRMMMMCCCCDDOOOOORREEEEEECEAAAAAAAMMMMMMQQQQVUUBXXXXXPPPPLLLWWWWWWW +CCCVVVRRRRAABBBBBBBBKCCCCCOOOOOOPPPPPHHHHHDDDDDDNVVVRRRRCCRPPPSSSSSSSSZZZZZZZZZZZZZZJJJJJJJ +VVVVVUUUUUUUJJJJNNNNAAAAAYYYYDDDIIIBBBBBBCCCCCCSSSSNNNQQQAAAAAJJJJJJJJLLLLZZZZWWWWMMXXMYYYCCCCOOOAAAAAAAAA +DWWWWWWRRVVVLLQQQQQDDGGGGGGGYYXXJJJPPTTTTHHHHHHUUUPPPPPPPTMMMMMMMMLLLDDDDDDAAAHHHHFFFFFFKKKKDDDDGGGGGOOOOOODDYYYYYYNNNNNNNNDD +KKYYBOOOOONNEEECFFFHHHHFDDDDWWWWCCCCCQQQKKKKKKLLLLOOOOQQQQQQCCWPXWWWWWWWFFFFJJMMMMMMIIIIIIIHHHHHDDZZCCCCCCXXXXXXXXXCCCCQQQQQQ +OOOCCFFUVVVMMMWWWOFFFAAAANFGSSOOOOOOOONNNNVQQCJJJMMMMMMMMM +JJDDDDDDDDDAAAQPPPPPPPPPWWBBBBBCCCCCSSAXXUUUUJJJUUUZZZCCXXXXXVVUUUJJJBSWIIIIIIIII +VVVVVPPPPPPWWKKKCCCCCCCCUUUUUUHHYAAAWWBBHKKKKKKTTTTTTTTQQOVVUUUNNNLLEZZZZZZAAAAAVVVVVVVYYEEEEBIIIIWWWGGIIIIPAAAAAFFFFFFXXLRRRRRRRRR +LLLLJJJVVQQQQQQQQZZZZNNNRTHHNIGGGGBJJJJMMMMMPPPPPPTPCCCCCCVVVVFFFFYYYYDDRRHHHHHHHRRRUUUUUEENNNNQQQOPPPFFFFFFFDDDDDD +OOOOOOOOOOOMMMMMMMOOOBBBBBBMMMMMNNNGFFFTTTCCUUUUFFFFFNNNQQQYDDDLLLLLLCCAFFFFFFFFVVVRRRRAAYYYYYYYYBB diff --git a/04_aeolian_transmissions/part1.py b/04_aeolian_transmissions/part1.py new file mode 100644 index 0000000..b105549 --- /dev/null +++ b/04_aeolian_transmissions/part1.py @@ -0,0 +1,18 @@ +# importo dal file data.py le stringhe date +with open("data.py", "r") as f: + lines = f.readlines() + +# definisco la funzione per convertire le lettere maiuscole nei corrispettivi numeri +def letters_to_numbers(text): + return [ord(char) - 64 for char in text.upper() if 'A' <= char <= 'Z'] + +# creo la variabile per la somma dei caratteri +somma = 0 + +# per ogni stringa in input (una per riga) +# lancio la funzione di conversione e sommo il numero di "celle di memoria" +for line in lines: + numeri = letters_to_numbers(line.strip()) + somma += sum(numeri) + +print ("Result: ", somma) diff --git a/04_aeolian_transmissions/part2.py b/04_aeolian_transmissions/part2.py new file mode 100644 index 0000000..dbc0a35 --- /dev/null +++ b/04_aeolian_transmissions/part2.py @@ -0,0 +1,50 @@ +# importo dal file data.py le stringhe date +with open("data.py", "r") as f: + lines = f.readlines() + +# definisco la funzione per convertire le lettere maiuscole nei corrispettivi numeri +def letters_to_numbers(text): + return [ord(char) - 64 for char in text.upper() if 'A' <= char <= 'Z'] + +# creo la variabile per la somma dei caratteri +somma = 0 + +# per ogni stringa in input (una per riga) +# lancio la funzione di conversione e sommo il numero di "celle di memoria" +for line in lines: + #numeri = letters_to_numbers(line.strip()) + # calcolo lunghezza totale della stringa (senza a capo) + total_len = len(line.strip("\n")) + # calcolo del numero di lettere da tagliare + cut = int(total_len/10) + # calcolo del numero di caratteri da tenere + resto = total_len - (2*cut) + + # definisco una variabile per ciclare solo fino alla lunghezza richiesta + l = 0 + + # per ogni riga (tolto a capo) eseguo la funzione per convertire la lettera in numero + for i in line.strip("\n"): + + if l == cut: + l = 0 + break + numero = letters_to_numbers(i) + # sommo alla variabile, la quota di numeri della prima parte di lettere + somma += numero[0] + l += 1 + # sommo alla variabile la cifra numerica della parte centrale della stringa + somma += (sum(int(x) for x in str(resto))) + l = 0 + + # come per il for sopra, ma per le ultime cifre della stringa + for i in reversed(line.strip("\n")): + + if l == cut: + l = 0 + break + numero = letters_to_numbers(i) + somma += numero[0] + l += 1 + +print ("Result: ", somma)