day_9: done but not validated
This commit is contained in:
1 parent
62a9aec76d
commit
7f36519fcc
4 files changed
+53
-11
No files matched your search
@@ -1 +1 @@
|
||||
2333133121414131402
|
||||
3862661670678085717870987066944388237122304387269526457922502763481789248860331275352261208057669164151786821267912912843756969762848733948147993167117987933260444111774981131046423127175391198132981556528886466841904153649781277634134462907446885521455261816827393693365787514157407057815067531283609939702491483692118848754199274930671713112463785536324065963870335246678963763726482884525850924546326162806111582168467928714746722135549182813311357913767784772057532215509849329438692631404536853075567677649217971898253752889665535729441681394169328065824974875236246829434715368379917054666169484640328312687686856934686335482475418948464312408116998373542665883885409969358775724793145487879242845351955713129714201538831838815217875978893510632238164136339832353066972996532394316253993598292538992698265645609135462016793077823110238350549616181835454778658492274752133885133617848131772264841284426255741812575847706824989369827790814863999436844435832394788125212563539120887592164845927156683646516884736895976162448078701810217211997757714597305943112091768739894935415080588665689588619214751452699225377448842552382714645731391293291719196493806420466963821479937998462940907597111280698091997249927394984480954720871455522683349717912972398086312742835749443356665382482770211460511847409428804324945190519697225633853884598989467548409177952915248884524871481341273810539844663145274965849925501619773290702917424719965397599656155619464517239527648838667212656252509065287996102291749635765924179496879987567988421552916225462068141585288857989397522893298078547573475029397729471482742227415093678467433833585581974520801299555867966523965521365240602420591049689515322573584587801813602737629254792342684399207550203422651452829091843828666741886361941380552364895732677532945225445298545679472991194588789818975821977958358236852846851074693762121156169170679638669072888470996698698374982094784536102671142687227696156687359545913072753828833789421251134588549560537474174274167164375818115569365786518851515634984176981023925274248657175863332734124558717190392686964463898278833362473217918744242090592361309077901789943455782980437866148266648980659885934632858133637318495144611352682679558948174555785341394959554518481324379954389571949379798699927799842081708213809849972491784743442738742363489984465616505556306247958538534230308012931179983252384480115232765927384128862290535123997064967921551968216067658445409994693229553190459426193113793462729654714541266069245934201721578789679223389611985783185797937312862861989920935961875627421238928754244822498298665832613926169739278723828972685450562612558094574686115640425076166086834288335478566380959426152235381969113578136127653214578726569672177757481990592677591569289624693855367864437951118494481241313526478573307773311253763345553095453366702172817326719879157047369364472279262067515174116997714272688669339979897217558899345834344966403858412176709094608719582046901639122512327762926371605024823564358012374344677845349011308996708160703385696392217086873042216245284096206590258140362787618397985785133588166394813531523575497665984748579865421286145347967544617355616620207468509685696956538653995117478190196190328737127351872593682230331381552715898574835927779470509619399569104717331323633665152076471081199643221597503889534134441446152839311617824499217950604416593594616887444297271961504964902858351364606440618647719726737095179832247079189522425276259212552027323533116778252327405972734575551119403612284766322733905559125351114520262840347187922185431868391254622267339750808529473186773152977727791885934945536782586173364954507447429356986334453713376019457998214560224675647962282411485066527577468242625764608756537664616360281146641181148875239238136456571091365245519271426217975916188374354719778370694847326183996887983989762272598897623762789682111487747557896857476771613071698071208484796888617050711686915423611427858895888289867251451846209998658497353429475094436575972760651597956247494359546596488297911046748476983292924345522544333754329274253245822043834444737874643897356157523141105796906143226239218495219870583024137351246969651989725742201012365368375032775784413722501795788424259582389941728769764359299863956232401938318976315442397796269915634475189474153432659777441340685198858318749727702884732056581353851878313090502293837633297917774941423967194643747886173899146029887162325536746971769963557111265048418749726489729230529246987656789130283033343366511362558290499733893894227774204164628029561191944681837498331268445743467015584077473130826665529438124478936691667650262478647546796086396988217868377680741187433976653075688496464792827651956152781810409264678544874652224854845230919776227276134182927886371781977575745824299293176388345219489777103169934482927992519850186256977232745384345690606096722086531054827142827933438246692165795834519794345723445282968837191288679796611764191370708183338748634595344430478457338775252320413494528328856361628Line truncated
|
||||
@@ -74,4 +74,5 @@ pub fn historian_hysteria() {
|
||||
|
||||
// Monday 09
|
||||
let disk_checksum = mon_09::disk_fragmenter("./assets/day_9_disk_input");
|
||||
println!("The disk checksum is {}", disk_checksum);
|
||||
}
|
||||
@@ -1,19 +1,59 @@
|
||||
use super::{utils::read_disk_map_input, DiskMap};
|
||||
use super::{utils::read_disk_map_input, DiskChecksum, DiskMap};
|
||||
|
||||
pub fn disk_fragmenter(input: &str) -> usize {
|
||||
// Last result: 6349343813585
|
||||
|
||||
pub fn disk_fragmenter(input: &str) -> DiskChecksum {
|
||||
let disk_map = read_disk_map_input(input);
|
||||
|
||||
let organized_disk_map = organize_disk_map(&disk_map);
|
||||
println!("{:?}", disk_map);
|
||||
println!("{:?}", organized_disk_map);
|
||||
let organized_disk_map = organize_disk_map(disk_map);
|
||||
|
||||
0
|
||||
println!("Organized map: {:?}", organized_disk_map);
|
||||
|
||||
calc_disk_check_sum(&organized_disk_map)
|
||||
}
|
||||
|
||||
pub fn organize_disk_map(disk_map: &DiskMap) -> DiskMap {
|
||||
let organized_disk_map: DiskMap = vec![];
|
||||
pub fn organize_disk_map(mut disk_map: DiskMap) -> DiskMap {
|
||||
let mut end_index: usize = disk_map.len() - 1;
|
||||
let mut start_index: usize = 0;
|
||||
|
||||
for block in disk_map {}
|
||||
'outer: loop {
|
||||
if end_index <= start_index || start_index > disk_map.len() - 1 {
|
||||
println!(
|
||||
"Broke out of outer: {} {} with len {}",
|
||||
start_index,
|
||||
end_index,
|
||||
disk_map.len()
|
||||
);
|
||||
break 'outer;
|
||||
}
|
||||
|
||||
organized_disk_map
|
||||
if let None = disk_map[start_index] {
|
||||
'inner: loop {
|
||||
if let Some(_) = disk_map[end_index] {
|
||||
disk_map.swap(start_index, end_index);
|
||||
end_index -= 1;
|
||||
break 'inner;
|
||||
}
|
||||
end_index -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
start_index += 1;
|
||||
}
|
||||
|
||||
disk_map
|
||||
}
|
||||
|
||||
pub fn calc_disk_check_sum(disk_map: &DiskMap) -> DiskChecksum {
|
||||
let mut checksum: DiskChecksum = 0;
|
||||
|
||||
for (block_index, block) in disk_map.iter().enumerate() {
|
||||
if let Some(id) = block {
|
||||
checksum += *id as DiskChecksum * block_index as DiskChecksum;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
checksum as DiskChecksum
|
||||
}
|
||||
@@ -75,3 +75,4 @@ pub type AntinodeList = HashSet<Antinode>;
|
||||
// Disk fragmenter
|
||||
pub type Block = Option<usize>;
|
||||
pub type DiskMap = Vec<Block>;
|
||||
pub type DiskChecksum = usize;
|
||||
Reference in new issue
Block a user