https://forgejo.org/2023-11-monthly-update/#federation
@proper totem loves
#AdVENt of Code
1 messages · Page 11 of 1
i have been following the mega issue task list for a while
me
evil
why is gnome term so ugly
I'm glad it's happening and I don't want to be angy at open source devs because yeah but I also wish it would happen sooner xd
Yeah seems like they never have enough people working on it 
shrimply contribute
i would! but I cannot at the moment
i think their issu is planning too much
and so I will just be wishful
I don't know go + I have barely a clue how AP works + if I do that then I will end up procrastinating on literally all of my responsibilities
Maybe at some point I'll ask in the matrix room if there's anything I could do to help, but not now
I am a konsole user because I am too lazy to figure out the cool emulators
Plus easy transparent blur
its so easy in alacritter
https://tenor.com/view/i-will-kill-you-kill-cat-gif-22236217 @native pewter
y
linuh
You still could it would just be more math involved
I think they did smth like that before
yeah someone said Chinese thingie theorem
but idk that algorithm and it seems complex lol
lazy
Number theory moment
https://www.reddit.com/r/adventofcode/s/jID46zLNtt
@hazy sinew someone did it
Moral of the story:use gpu
I actually wasn't so thank you

I get the todays problem but uhh
That visualization is kinda horror
So we need to create a equatiob
I am so sleeeeepy
sleep
fun day
hey today my example fetcher actually works
||the size of today's inputs scared me but this was also probably one of the easiest days together with 6||
today was totally doable but i slept through my alarms so i had to do it half asleep
I hate when rust goes "BORROW OF MOVED VALUE"
simply steal it if you can't borrow it 
so much duplicate code 😭
||```kotlin
override fun solvePart1(input: File) = input.rl().sumOf { line -> generateSequence(line.split(" ").dropBlanks().map { it.toLong() }) { seq -> seq.zipWithNext { a, b -> b - a }.takeIf { it.any { diff -> diff != 0L } } }.fold(0L) { acc, seq -> acc + seq.last() } }
override fun solvePart2(input: File) = input.rl().sumOf { line -> generateSequence(line.split(" ").dropBlanks().map { it.toLong() }) { seq -> seq.zipWithNext { a, b -> b - a }.takeIf { it.any { diff -> diff != 0L } } }.toList().asReversed().fold(0L) { acc, seq -> seq.first() - acc } }```||
simply just solve them in the same function and return an array 
@proper totem hi
spoob

yeah todays not bad at all
have you tried not moving values
pretty simple really
I dont
I pass array as parameter
then use .last.unwrap
i tried, its very silly
so ill just keep it like this
.last returns a reference to the element
idk I had some borrow checker issues too but then I did things the smarter way and suddenly I no longer had a mutable borrow and an immuable one at the same time
crazy
bro i accidentally clicked my mouse side button that takes you back on the website, and it made it appear like i didnt do part 2
even tho i did it 40 minutes ago
i got so scared bro
ok pushed my code
https://tenor.com/view/i-will-kill-you-kill-cat-gif-22236217 @solemn python
soon
i love waking up sick on my birthday at 5:40 am to do aoc
and then not placing on global leaderboard
huh the maximum iterations I had to extend the array till 0s is 19 times
I was kinda expecting it to be more tbh
crack my spine like a whip
it is pretty neat how this one reduced today
calculations go brrr
mine takes like 16ms for both parts
yeah there shouldn't be much difference between the two parts
because its just literally the same thing, different order
julia is such a weird lang
funny seeing how short it takes on the example input
plus or minus more than the actual time
aaaa I just thought of a good way to do it in assembly with minimal memory allocations
I just take the max of (max - mean, mean - min)
theres probably a better way but ive never really done this before so thats where my brain went
¯_(ツ)_/¯
||so when im calculating diffs, should i first check if the calculated diffs is just zero, then stop?||
yeah
this isnt actually bruteforce
he cached the positions at a specific index in the instructions
or smth
seq.zipWithNext { a, b -> a - b }.takeIf { it.all { it != 0 } }
smth like this
i already forgot
delete julia
i store all iterations of diffing in a hashmap
i am too dumb
because making smart people code is for overcompetitive nerds
||
test
||
||```rs
for j in (0..=i).rev() {
let diff = *sequence_map.get(&j).unwrap().first().unwrap();
let Some(modify_arr) = sequence_map.get_mut(&(j-1)) else { break };
modify_arr.insert(0, *modify_arr.first().unwrap() + diff);
}
you are rusty
and my sequences were reversed because thats just how i did it
p1?
i just moved my operations around until i got example right
okay done
part2 was pretty simple but I couldnt figure out how to reverse process for 20 minutes
mantika moment
did you finish
do part2
yeah I failed my first attempt b/c of that
theres one more thing you are missing to reverse
well maybe 2 depending on your code
u also have to replace + with -
i had to do .toList().asReversed() and then make it -
i cant tell
||```julia
for arr in lines
local diffs = diffs_of_arr(arr)
local num = 0
while true
_diffs = diffs_of_arr(diffs)
if all(diff -> diff == 0, _diffs)
num += last(diffs) + last(arr)
break
else
num += last(diffs)
diffs = _diffs
end
end
global total += num
end
I went full recursion
guh?
||
fn find_next_value(numbers: Vec<i32>) -> i32 {
let mut differences: Vec<i32> = Vec::new();
for number in numbers.iter().zip(numbers.iter().skip(1)) {
differences.push(number.1 - number.0);
}
if differences.len() > 1 && !differences.iter().all(|&x| x == differences[0]) {
let diff = find_next_value(differences.clone());
return numbers.last().unwrap() + diff;
}
return numbers.last().unwrap() + differences[0];
}
||
i dont speak julia
ew recursion
and cloning
you will understand
I learned from the scratch card p2 solution that recursion is not very fun in rust
if you want flexibility with variables you should not be using rust
if you didn't use recursion though, you wouldn't need to clone because the structure would mean you could use references correctly
its literally part 1
bro i just realized why i took so long for part 1
i was doing input.extractNumbersSeparated() to get the numbers but there were negatives so i had to do input.extractNegativesSeparated
i ended up just rewriting it completely
because your func owns the vec
use a reference
&[i32]
actually no u mutate it
how do you expect it to work
actually no
what
it literally works without cloning
the fuck do you mean
rustc literally hates you
manti got me questioning reality with how it didnt work when it literally works
rust variable borrowing is stupid
point at deez nuts
wait it really works

I probably had another code that was breaking it which I removed later
@tranquil vapor do AOC
it is
also it is veeery easy
also how would you even not brute force
check
Time to go eat
Then go library and do today
Hope I can sneak in some time to do more large inputs
there is only 1 solution
actually there probably is a math trick
but idk
can somebody please teach me chinese remainder theorem implementation
wtf is an inverse modulo
i understand what it does but not how to implement it
I'm trying to think of some kinda formula
Lol
Do u mean modular division
@sullen fiber
idk it says inverse modulo
Idk if that's real
Part 1 rate
Sick video: ||https://youtu.be/4AuV93LOPcE||
Another long one. Obviously not for the faint of heart :) Anyway, this one is about the beautiful discrete counterpart of calculus, the calculus of sequences or the calculus of differences. Pretty much like in Alice's Wonderland things are strangely familiar and yet very different in this alternate reality calculus.
Featuring the Newton-Grego...
uiua should be renamed to 🚔 🚑
uiuo
No
guhhhhhhhhhh i dont know how to doo
solve my life problems @steady fog
reverse ur list
find chinese remainder theorem for large numbers simple explanation
which list
u probably have a list of lists for part 1 right
just do .reverse() and change nothing else
no
idk how mine works
accidentally solved part 1
send code
if we get chirem problem this year i get leaderboard
ew not kotlin
I know
for arr in [reverse(x) for x in lines]
local diffs = diffs_of_arr(arr)
local num = 0
while true
_diffs = diffs_of_arr(diffs)
if all(diff -> diff == 0, _diffs)
num += last(diffs) + last(arr)
break
else
num += last(diffs)
diffs = _diffs
end
end
global total += num
end```
try this
time to download julia
yop
it works
im insane
hardest p2 ever
i would use julia if it didnt require end keyword
and had interop with my kotlin utils
you just
take first element instead of last
and subtract instead of adding
I diddd
Wait I just realized
Did it say something like "the inverse modulo p"
Cus then it probably just was saying inverse, (under modulo p)
yall getting too comfortable with unspoilered spoilers
tf today was dead shrimple
fr ong!
coulda been on lb i swear!
oh nvm!
my ass is not beating 5 minutes
this the big break before dijkstra
Lmao
oh my god so much text again
is there a subreddit where people summarise the exercises in less words
what...
part 2 was laughable
i just had to add like 4 lines for part 2
can literally even use the same loop as u do for part 1
i took like 20mins
**solution.cr: **Lines 29-38
||```cr
history_diffs.last << 0
history_diffs.last.unshift 0
history_diffs.reverse_each.skip(1).with_index do |row, i|
row << row.last + history_diffs[history_diffs.size - 1 - i].last
row.unshift row.first - history_diffs[history_diffs.size - 1 - i].first
end
suf_sum += history_diffs.first.last
pre_sum += history_diffs.first.first
@real hinge go
mantika moment
so good
I accidentally made c++ memleak
crashed my desktop
how do i even make 2d array in c++
these pipes are pain
i got a solution but ||recursion not allowed|| so it goes explod
oh my gosh
I made this so much more complicated for myself than I needed it to be
im piecing it together slowly
||there's only one possible loop that you're on so you don't need to recurse to check more paths you just need to follow the single path until you make the loop||
aaaaaaaaa
rust borrowings are gonna make me kill myself
ur prob just using rust wrong
day-10-cpp.cpp: In function ‘std::vector<Tile> getAdjacent(std::vector<std::vector<Tile> >&, int, int)’:
day-10-cpp.cpp:47:68: warning: no return statement in function returning non-void [-Wreturn-type]
47 | vector<Tile> getAdjacent(vector<vector<Tile>>& map, int x, int y) {}
| ^
this is mantika
I think this is horrible
guh it works on example input but then seems to infinite loop on normal input
C++ intellisense so slow to update
this seems like a normal amount of loops to run
sure
ok I found my issue but it thinks the answer is 4
on normal input
wtf
I hate debugging aoc so much
they call me a critter
whAT
oh right
me being an idiot is coming back to bite me isn't it
I noticed the potential for overflow and ignored it
nice one
I love
part two ||is going to make me EXPLODE||
do not
||I guess it won't be too hard, i just got a good idea on how to do it||
enjoy my pipe 
thank you
you love to see it
i do
what the hell am I doing wrong aaaa
error: Recipe day10 was terminated on line 42 by signal 11
What
oh segfault
funny
fixed
i'm so confused
code works on every example
not on input though
and visually it works too
i need a hint on p1
if you mean me
I have a solution that works on the examples
but cannot figure out what the heck is wrong
BRO
||I tried flood fill for p2, but gave up. I then just looked at every coordinate that ISN'T part of the loop, and counted how many times |, J, L, or S appear to the left of it. If it appears an odd number of times, the given coord MUST be in the loop.||
guy from solution megathread
this is so smart wtf
guh
spoiler that smh
i think my method would just get stuck in a loop
finally holy hell
have fun
is today's day easy
nop
im yet to do
no
||I tried flood fill too, i have no clue why it wouldn't work, but i guess that proposed solution works too||
||bleh but flood fill is so much nicer of a solution||
GUHHHHHHHHHHHHHHHHHHHHHHHHHH idk what to do
not at all
ok I have a pretty decent idea honestly
xcause it maeks a copy
doesn't seem too hard but also this sucks
guhhsince I use recursion this means by code isnt able to find a loop
at least loop long enough
max 265
taking the address of a temporary object of type 'Tile'C/C++(clang-diagnostic-address-of-temporary)
jfhbhwebfwebf
bro if you just look at this example and realize its day 10 you could instantly figure out that floodfill isnt the solution
are u doing different language every day
yes
im doing current_tile.dist = 200;
then i print all the tiles out
theyre all -1, the default value
my input is literally a donut
h i see now
bleeeeehhhhhhhhh
i ned to figure out gdb
same
see if im accidentally cloning the tile
sdkcnskjdnckjsndckjsdkjcnskdncksjdckjsndkcskjdclkkjahkashdkjfhaksdjfhaksdfasdfasdfaksdjfhkjsdcajdskn
@real hinge will figure out how to use refeernces in c++
pointer
a
bro #3 modeled his grid in double resolution
wtf
to make the holes between pipes of size 1
hm I have a stupid idea
oh
i hate rust
guh have you never used pointers
hardly
hear me out: expand grid size by double, then floodfill
yes I saw it because you so kindly spoiled it for everyone a few pages above in this chat
yes
||count the number of "|LJS" that are on the path to the left of the point, if its odd then the point is inside the path||
but I refuse to use that because id rather do my own way that isn't copying what you gave
oops
queue<Tile> tile_queue;
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (map[i][j].type == Tile::Start) {
tile_queue.push(map[i][j]);
break;
}
}
}
while (!tile_queue.empty()) {
auto current_tile = tile_queue.front();
current_tile.dist = 0;
setting dist to zero doesnt actually update the tile
i said something and was going to delete it if you didn't respond but then i forgor xd
not exactly a spoiler but just in case ||don't worry that's not the full solution and it still depends a bit on what your input is/you need to understand what it's doing||
how do you guys determine what S is dynamically
i dont wanna push hardcoded solution to github
do you have to?
I just check the 4 directions for a connected pipe
there will only ever be 2
just treat it as if it is a sort of + is what I do
i just did this
for (int i = 0; i < height; i++) {
for (int j = 0; j < width; j++) {
if (map[i][j].type == Tile::Start) {
tile_queue.push(&map[i][j]);
break;
}
}
}
find start tile put it in the queuee
|| just check which directions it's connected to, it will only ever be connected to one valid loop||
using vscode for C++ is funny
||bleh i'm still annoyed that flood fill isn't the immediate solution that would have been so much nicer||
||but i will be content with the math solution because the geometry makes sense xd||
true
||flood fill is A soluton and its also the one #3 p2 used||
||double the grid size so x, y is now 2x, 2y and then floodfill normally without any edge conditions||
yeah
im so powerful
||doubling the grid isn't entirely so simple because you then need to make sure that the pipe still connects everywhere in a sane way, which isn't too hard but it makes it trickier||
wdym
||
say you have
S-7
|.|
L-J
it becomes
S.-.7
.....
|...|
.....
L.-.J
now to get the path instead of adding the cardinal neighbors you add the cardinal neighbors + 1
||
yeah I was overcomplicating it
kinda want to make a visual version of this one
but effort
im so Powerful
I AM GONNA DIE
LIFE IS MEANINGLESS
LOOK I TRIED THAT
ANSWER WAS JUST ONE LESS
I DID WRONG CALCULATION
ATE MY HALF HOUR
part2 please dont be bad 🙏🏿




mantika
i did that too except i made sure my answer was computer correctly
😭
why is it in water
funny
I found out there was 2 pipes that were supposed to connect but didnt
those had values of 9000 ish and 3000 ish
C++ plugin is soooooo slow
I added them together and divided by 2
the problem was it was either one more or less 
I thought I was in wrong way so gave up in that
what
NeBend
wtf is that
wtf why isnt it fsjndfjsdhfbn
ur overcomplicating this
then I added 2 of these values and divided by 2
thats where the wrongness came
anyway
doesnt really matter
you can ||keep track of the path you've traversed (depending how you're tracking that in the first place) and make sure that you don't backtrack that way||
the number of steps should be even
if ur loop is 3x3 then S is the 0th and the 8th step
mine is odd
oh you meant by that
but it can be 13902 or 13904
mantika is a genius
can i test my code on someone elses input
are you doing stack based dfs
oh wth its not even adding the pipe in the queue
if so, its ||the amount of steps until the stack is empty +2||
idk but bleh solved the problem already
your p2 answer is wrong though
what the correct answer
@proper totem
everything then
|| 541 ||
can i have your input too
fbshdfbhsdf i broke everything
first >2h day
sadge
bro hyper neutrino and jonathan paulson got absolutely destroyed today
jonathan paulson was behind xiaowucl by like 50 points now hes behind by 350
I'm fairly sure you are the only one here who cares about the global leaderboard at all
cool
im writing the most beautiful code
not possible, youre not using kotlin
@steady fog count free spaces
okay
guhhh
my code works on the example but not my input
@real hinge help
fix
is he even in the global lb
guh give
im counting S as valid
yop
@real hinge@real hinge
do you want my input
that's why I said this to ty @hazy sinew
13428/2
@real hinge :3
divide by 2
wrong
how
👍
oh right
i wish old computers without UTF support never existed so we could have actual pipes instead of 7FJL|-
oh found an issue
guh my brain completely stopped
I don't get this junk parts in part 2
can someone explain this
need to figure out where that top 4 comes from
what are you cooking
a junk part is a pipe that isnt in your loop
turns out part 2 actually had a simple solution
||https://en.wikipedia.org/wiki/Shoelace_formula||
im going to eat your shoelaces
lets see if i can do this
oh its like
1 ahead
weird
i am so old
GUH
SEGMENTATION FAULT
fnsdjfs wtf
now i got 7297
ok i dont think i can lace the shoes of this polygon
im gonna go study graph theory now
i dont think you can eat the shoes of an integer grid
what part is this
put it through a translator i dont speak 💩
how
lots of duplicate code
i need like a table of directions and matching offsets
Up = (0, -1) etc
actually
hm
i am mixing up x and y again i think
yea
i will try once more
stilll..
i just made a Tile struct of news, start and outside bools then made a giant ass match case for it
how do I measure perf in rust
isn't this p2
you don't have to spoiler it anyway
bro i was tryna figure out why my neovim syntax highlighting wasnt working turns out the file is called day10.txt not day10.cpp
txt
cuz it was message(3).txt
i think this check is longer than all of my code for 2023 combined
why did you make a class for the tiles
is s generic
or is it fitted for your input
Segmentation fault (core dumped)
bool isConnecting(char cur, char nei, int dx, int dy) {
bool up = dx == -1 && dy == 0;
bool down = dx == 1 && dy == 0;
bool left = dx == 0 && dy == -1;
bool right = dx == 0 && dy == 1;
switch (cur) {
case 'S':
return (nei == '|' && (up || down)) || (nei == '-' && (left || right)) ||
(nei == '7' && (up || right)) || (nei == 'F' && (up || left)) ||
(nei == 'L' && (down || left)) || (nei == 'J' && (down || right));
case '|':
return (nei == 'L' && down) || (nei == 'J' && down) || (nei == 'F' && up) || (nei == '7' && up) ||
(nei == '|' && dy == 0);
case '-':
return (nei == 'F' && left) || (nei == 'L' && left) || (nei == 'J' && right) || (nei == '7' && right) ||
(nei == '-' && dx == 0);
case 'J':
return (nei == '7' && up) || (nei == 'F' && up) || (nei == '|' && up) || (nei == 'L' && left) ||
(nei == 'F' && left) || (nei == '-' && left);
case 'F':
return (nei == 'J' && down) || (nei == '|' && down) || (nei == 'L' && down) || (nei == '7' && right) ||
(nei == '-' && right) || (nei == 'J' && right);
case '7':
return (nei == 'F' && left) || (nei == 'L' && left) || (nei == '-' && left) || (nei == 'J' && down) ||
(nei == '|' && down) || (nei == 'L' && down);
case 'L':
return (nei == '7' && up) || (nei == 'F' && up) || (nei == '|' && up) || (nei == 'J' && right) ||
(nei == '-' && right) || (nei == '7' && right);
default:
return false;
}
}
have fun
my input gave me an answer but it was wrong
oh
i think ur check is completely wrong
maybe
bleh I gave up on part2
I kinda wanted to go as much as I can with gold stars but its getting dumber
at least my way of writing
just do the smart solution
u dont have to come up with everything by urself
what even is smart solution
||count the number of times you cross the pipe to the left, if your S is either L J or | then count the number of times you touch a L J | or S to the left, if your S is not L J or |, then count the number of times you touch a L J or | (no S) to the left. If the number is odd then you are inside the loop, if it is even the you are outside, this is because of winding/knot/graph theory or whatever, where if you have a simple loop that is just a circle/square, to get out you would have to cross it once, and if you are outside, you would have to cross it 0 times to get out. Because your pipes are 1 continuous loop in 2d space, they can be unfolded into a circle in 3d space (if you move segments of the pipe over/under eachother)||
unwind it with the rope dragging one from last year 
dont remind me please
tomorrow will be matrix multiplication
i already know
that uhhh confused me more

I dont get the logic behind it
the logic or the explanation
imagine this is your pipe system
you want to get all the points inside
tf are they cooking today
you see how orange is outside and blue is inside
||and you can see, if you go to the left of the orange point, it crosses 4 pipes, and if you go to the right it crosses 2 pipes, if you go to the left from blue it crosses 3 pipes and right of blue 5 pipes. because there are no knots in this pipe system, we can preserve the relative positions of the points and move the pipes to make them form a rectangle, notice how the blue point has exactly 1 pipe crossing until it escapes to the outside because its inside a rectangle and obviously needs to cross one of the sides in any direction to get out, and the orange point doesnt, or it can cross an even amount of points and still end up outside, so basically to switch states from inside to outside or vice versa, a point needs to cross exactly 1 pipe||
||which is why you can just count the number of L J and | to the left (after replacing S with the correct pipe) and add 1 to the area if its odd, and add 0 to the area if its even||
||when you are out of bounds of the grid, you will be guaranteed outside the pipe loop, so we are counting the number of steps we need to get there, and if its even it means we started already outside, if its odd it means we started inside the loop||
||make sure youre counting the pipes that belong to the loop not the junk pipes, so you basically have to calculate the loop path from part 1 again||
I think I got the logic
lets try
hm
I am checking both left and top but its giving big on example
IS IT PATH FINDING
WHY DID UR BRAIN GET RUST INFECTED
not really
there is only one way it can go
but still uhhh
maybe
ewbuntu
define path finding
its my vps
why is ur vps not on windows 10
why r u using a vps
shortly I dont have stupid visual studio tools installed on my ssd
to solve aoc even when I am in university I am working on vps
delete visual studio
why not run it on laptop
get a new ssd
but it keeps getting corrupted
thats the problem
libux
poor 
this seems like a terrible solution
how is it set up
are u paying for it or hosting urself
it is working decently tbh
oracle free tier
- using vscode remote ssh extension
I dont even notice difference
why are u using vscode
it feels like local
I love it
are you a paid actor by microsoft
WDYM SHE
sorry typo
is this whole server a paid actor by microsoft
i dont understand how one can unironically use vscode
ITS NOT NORMAL
IM A NORMAL PERSON USING VISUAL STUDIO CODE (IT HAS HUGE PLUGIN SUPPORT)
every ide has that
neovim probably has better plugin support than vscode
so does any jetbrains produc
t
yes
at that point its just choice
intelliJ IDEs use billion gbs of memory
for simple stuff like JS I wouldnt use intelliJ
vim doesnt
I also dont have any reason to use vim
vscode resource usage is fine
its pretty fast
and uhhh thats all I want
me when i have to move my hand to my mouse and then use the scroll wheel to scroll down to the line i want to edit
vim still better
vscode with vim extension is just vim but less efficient slower and bigger
jetbrains is very slow and bloated
vim is unusable for normal people who aren't on 10kg of adderal
vscode is perfect, smooth, lightweight, and very good ide features
that sounds very biased
vscode is very slow and bloated, is basically a text editor, doesnt even have a built in compiler
jetbrains is perfect, smooth, not too heavy and very good ide features
vim is perfect, smooth, lightweight, and very good ide features
okay that's ur preference
how is jetbrains smooth
i disagree but that's fine
everytime I open a gradle project I need wait at least 20 minutes
or just use vscode
which he prefers
why are we judging people for their ide choices
were not juding people were judging ides
define smooth
when I open a project it doesnt make me wait for 5 hours, and doesnt lag when I go between files
let us cook 😭
actually once loaded (after like 10 mintues) it doesnt really lag
android studio: 7 seconds
intellij: 5 seconds
actually vim takes longer because you have to open terminal and enter the file name
timed u out for 5 minutes cause this is really not productive you're just shitting on other people's preferences
please just stop
this is advent of code, not insulting other people's ide preferences
anyway
did u solve yet @real hinge

we were having a civil discussion 😭 😭 whatever
are u currently trying to do part 2
u can cheese part 2 ||make a square exactly in the middle that is exactly 1/4 of the area of the actual grid, it will always contain every contained point and no outside points||
oh m god
its finally done
determination (undertale referance)
thank @hazy sinew for idea
*reference
Is today good for uiua
So that means it is
Ok Cool
Oh I looked at it
I don't think I wanna do this in Uiua
True
Wait I def want to do this in Uiua
@warped dust did u know when u copy arrays in Uiua they're copy on write
kid named CopyOnWriteSortedArray
are you doing in uiua
Yes they are
Everyone is but you
I want do too
but uoh we'll see
I WOULD NEVER USE UIUIUIUIDJASOIJFIOUJHWAHIFUJAJIOFWEJIOGEFW
Uiui
wee woo wee woo
Uiuoo
but vennnn @=====4301++)+(')'(!')+(=)'=^)!=' ==O=++Ü;ᘰᘱᘲᘳᘴᘵ
(day 39 solution in uiua)
This is actually true
I don't think I can multithread my solution
I'm so sad
And I forgot the library opens at 12 on Sundays guhh
1 hour without AOC will kill me
How did you know I was on 10kg of adderal
why would i want a built in conpiler 
🤷♂️
nonsensical argument at best
how did you know i was very slow and bloated
you are
AdVenT of Code
i (ad)vented 
advertisement ventilator of code
you're smelly
bro why are there no good graph theory courses
There are good YouTube videos
Lectures and edited videos
YouTube and Wikipedia ez clap
im so glad uiua has an actual modulo operator
FUCK JAVASCRIPT
theyre super long and explain only the basics
also imma start solving every day in kotlin and then in python
I usually use them for foundational stuff and scour Wikipedia and some kinda stackexchange
My personal fav flow so far
part 1 in uiua is kinda real
part 2 is silly
yeah pt 2 seems not that hard once u think of smth
just a bit of thinking
i wonder if u can just brute force part 2 (check every single value individually) or if u gotta do it the smart way
Checking if each individual point is inside the loop is prob harder lol
u might be right
ur cracker
u are soooo right
oh my god the loop is ugly as shit
uhhh
why is this outside the loop?
its fully surrounded by loop chars
OH GOD
ok i got it
god this is hard
pinch
It's among u
Squint
Same thing
ababababa how do i do this...
i will pinch your eye
do not
Do u wanna know how I did it
my current approach is just:
|| i have a recrusvie func visit_neighbours that marks all floor neighbours and visits their neighbours as well. then i find all floors that are on the outside and feed them into the func ||





