tangled
alpha
login
or
join now
hauleth.dev
/
advent-of-code
3
fork
atom
this repo has no description
3
fork
atom
overview
issues
pulls
pipelines
chore: small cleanups
hauleth.dev
3 years ago
c6fcc17c
b3c0ceca
+114
-20
1 changed file
expand all
collapse all
unified
split
2022
day12.livemd
+114
-20
2022/day12.livemd
···
100
100
101
101
```
102
102
warning: variable "graph" is unused (there is a variable with the same name in the context, use the pin operator (^) to match on it or prefix this variable with underscore if it is not meant to be used)
103
103
-
2022/day12.livemd#cell:7urrvoyk6ltuxa4kdqc63nncfh37x2fn:30
103
103
+
2022/day12.livemd#cell:6nz6sdhe57lxfvshc57dctj7qaalwwz3:42
104
104
105
105
```
106
106
···
207
207
<!-- livebook:{"output":true} -->
208
208
209
209
```
210
210
-
[32256290, 409066827, 186924390, 1502865800, 887663648, 2543466388, 697356458, 1070575781,
211
211
-
1659702078, 4000784021, 1947564743, 2361038489, 3904452243, 3615669650, 270460033, 1281654811,
212
212
-
3153535741, 2393890474, 3946102901, 2210758189, 2982223724, 2654353783, 2656280720, 3935389969,
213
213
-
2818948768, 4279780723, 3595206681, 3496428192, 2269119594, 2583881244, 3997991000, 520325395,
214
214
-
457672928, 1453390554, 3289433936, 2574402082, 1560492086, 3242480874, 389839366, 4176230802,
215
215
-
1147783117, 2469841095, 2034019869, 438932546, 1799582666, 1100008137, 467060197, 162439868,
216
216
-
3928107970, 800548913, ...]
210
210
+
[
211
211
+
{59, 38},
212
212
+
{38, 5},
213
213
+
{76, 17},
214
214
+
{66, 36},
215
215
+
{54, 26},
216
216
+
{10, 18},
217
217
+
{3, 21},
218
218
+
{42, 40},
219
219
+
{73, 32},
220
220
+
{43, 36},
221
221
+
{2, 9},
222
222
+
{80, 31},
223
223
+
{20, 12},
224
224
+
{63, 11},
225
225
+
{5, 15},
226
226
+
{76, 4},
227
227
+
{136, 4},
228
228
+
{3, 9},
229
229
+
{90, 11},
230
230
+
{85, 39},
231
231
+
{24, 29},
232
232
+
{91, 28},
233
233
+
{55, 27},
234
234
+
{108, 10},
235
235
+
{84, 4},
236
236
+
{9, 9},
237
237
+
{161, 38},
238
238
+
{3, 33},
239
239
+
{68, 22},
240
240
+
{143, 3},
241
241
+
{49, 8},
242
242
+
{70, 26},
243
243
+
{39, 25},
244
244
+
{18, 13},
245
245
+
{88, 0},
246
246
+
{32, 21},
247
247
+
{96, 3},
248
248
+
{84, 40},
249
249
+
{53, 1},
250
250
+
{88, 30},
251
251
+
{120, 10},
252
252
+
{36, 4},
253
253
+
{115, 13},
254
254
+
{112, 3},
255
255
+
{42, 0},
256
256
+
{4, 17},
257
257
+
{35, 12},
258
258
+
{114, 19},
259
259
+
{20, ...},
260
260
+
{...},
261
261
+
...
262
262
+
]
217
263
```
218
264
219
265
```elixir
···
258
304
if has_negative_cycle?(distances, weights) do
259
305
nil
260
306
else
261
261
-
Map.new(distances, fn {k, v} -> {Map.fetch!(vertices, k), v} end)
307
307
+
Map.new(distances, fn {k, v} -> {Map.fetch!(vs, k), v} end)
262
308
end
263
309
end
264
310
···
286
332
<!-- livebook:{"output":true} -->
287
333
288
334
```
289
289
-
{:module, BellmanFord, <<70, 79, 82, 49, 0, 0, 19, ...>>, {:has_negative_cycle?, 2}}
335
335
+
{:module, BellmanFord, <<70, 79, 82, 49, 0, 0, 18, ...>>, {:has_negative_cycle?, 2}}
290
336
```
291
337
292
338
```elixir
293
293
-
min_paths =
339
339
+
paths =
294
340
tgraph
295
341
# |> Graph.bellman_ford(stop)
296
342
|> BellmanFord.call(stop)
297
297
-
|> Map.take(lowest)
298
298
-
|> Map.values()
299
343
```
300
344
301
345
<!-- livebook:{"output":true} -->
302
346
303
347
```
304
304
-
[:infinity, :infinity, :infinity, 454, :infinity, :infinity, :infinity, :infinity, :infinity,
305
305
-
:infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity,
306
306
-
:infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity,
307
307
-
:infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity,
308
308
-
:infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity, :infinity,
309
309
-
:infinity, :infinity, :infinity, :infinity, :infinity, ...]
348
348
+
%{
349
349
+
{76, 13} => :infinity,
350
350
+
{38, 2} => :infinity,
351
351
+
{1, 26} => 430,
352
352
+
{140, 11} => 100,
353
353
+
{32, 15} => 388,
354
354
+
{89, 14} => 328,
355
355
+
{35, 30} => 392,
356
356
+
{156, 9} => :infinity,
357
357
+
{4, 5} => 454,
358
358
+
{74, 12} => :infinity,
359
359
+
{11, 39} => 425,
360
360
+
{131, 5} => 323,
361
361
+
{22, 38} => 413,
362
362
+
{29, 25} => 403,
363
363
+
{86, 10} => :infinity,
364
364
+
{83, 36} => 366,
365
365
+
{29, 26} => 402,
366
366
+
{47, 27} => :infinity,
367
367
+
{9, 34} => 426,
368
368
+
{137, 16} => 12,
369
369
+
{90, 0} => :infinity,
370
370
+
{103, 39} => 289,
371
371
+
{126, 13} => :infinity,
372
372
+
{47, 38} => :infinity,
373
373
+
{128, 35} => 268,
374
374
+
{20, 3} => 412,
375
375
+
{145, 20} => 24,
376
376
+
{143, 39} => 247,
377
377
+
{79, 17} => 335,
378
378
+
{75, 0} => :infinity,
379
379
+
{150, 18} => 167,
380
380
+
{147, 10} => 178,
381
381
+
{148, 26} => 75,
382
382
+
{76, 2} => :infinity,
383
383
+
{138, 9} => 104,
384
384
+
{58, 33} => 372,
385
385
+
{150, 5} => 296,
386
386
+
{54, 31} => 374,
387
387
+
{22, 37} => 412,
388
388
+
{75, 36} => :infinity,
389
389
+
{91, 35} => :infinity,
390
390
+
{143, 4} => :infinity,
391
391
+
{121, 27} => 283,
392
392
+
{91, 38} => :infinity,
393
393
+
{159, 26} => 268,
394
394
+
{131, 24} => 124,
395
395
+
{58, 10} => 367,
396
396
+
{111, 14} => :infinity,
397
397
+
{75, ...} => 345,
398
398
+
{...} => 411,
399
399
+
...
400
400
+
}
310
401
```
311
402
312
403
```elixir
313
313
-
Enum.min(min_paths)
404
404
+
paths
405
405
+
|> Map.take(lowest)
406
406
+
|> Map.values()
407
407
+
|> Enum.min()
314
408
```
315
409
316
410
<!-- livebook:{"output":true} -->