Oops, dank jeMatHack schreef op vrijdag 2 december 2022 @ 18:21:
[...]
Ik zou met alle liefde willen kijken, maar volgens mij staat je repo private

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.
Oops, dank jeMatHack schreef op vrijdag 2 december 2022 @ 18:21:
[...]
Ik zou met alle liefde willen kijken, maar volgens mij staat je repo private
Janoz schreef op vrijdag 2 december 2022 @ 18:15:
Voor de vingeroefening ook nog even effectief 2 regels in java.
spoiler:Er zijn toch maar 3x3 = 9 mogelijkheden dus die tabelletjes zijn zo gemaakt
[code=java]
static final int[] p1 = new int[] {4, 1, 7, 8, 5, 2, 3, 9, 6};
static final int[] p2 = new int[] {3, 1, 2, 4, 5, 6, 8, 9, 7};
[/code]
Vervolgens kun je met wat lambda shizzle alles in 1 regel klaar krijgen waarbij het grootste deel nog het inlezen is (vooral omdat ik het van het classpath haal)
[code=java]
System.out.println(
Files.lines(Paths.get(Objects.requireNonNull(Day2Lazy.class.getResource(file)).toURI()))
.mapToInt(s -> p1[(s.charAt(0)-'A') + 3 * (s.charAt(2) - 'X')]).sum());
[/code]
Voor deel 1 p1 gebruiken en voor deel 2 p2
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
M.i is je code goed begrijpbaar/leesbaar.
There's no place like 127.0.0.1
Challenge acceptedVoutloos schreef op donderdag 1 december 2022 @ 13:03:
Even de guru triggeren: Wedden dat @.oisyn de grote dataset niet onder 0.5s kan?
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
[ Voor 17% gewijzigd door .oisyn op 03-12-2022 04:59 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Zo te zien zijn de 2e plek op deel 1 en de 81e plek op deel 2 ook geautomatiseerd behaald (zie https://twitter.com/max_sixty/status/1598911166465835010), maar is de gegenereerde code voor de 81e plek op deel 2 wel handmatig aangepast om een bug te fixen. Ik denk dat de gegenereerde code voor de 2e plek op deel 2 ook een bug had, maar dat ostwilkens 'm sneller wist te vinden dan max-sixty.Asgardian28 schreef op zaterdag 3 december 2022 @ 07:06:
@jmerle Indrukwekkend!
Die plek 2 deel 2 ook met GPT? Want dat duurde 2 minuten. Misschien met de prompts zitten stoeien?
There's no place like 127.0.0.1
[ Voor 11% gewijzigd door Diderikdm op 08-12-2022 14:22 ]
Always looking for developers wanting to work with Erlang.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| #!/usr/bin/env python3 import random import sys from string import ascii_letters random.seed(1337) NUMBER_OF_SETS = 100 LIMITS = [100_000, 500_000] def generate(): part_1 = 0 part_2 = 0 for n in range(NUMBER_OF_SETS): chars = list(ascii_letters) random.shuffle(chars) common = chars.pop() for i in range(3): char_set = chars[i * 17 : i * 17 + 17] char_set_common = char_set.pop() k = random.randint(*LIMITS) parts = [ random.choices(char_set[:8], k=k) + [char_set_common], random.choices(char_set[8:], k=k - 1) + [char_set_common, common], ] random.shuffle(parts[0]) random.shuffle(parts[1]) random.shuffle(parts) part_1 += ascii_letters.index(char_set_common) + 1 print("".join(parts[0] + parts[1])) part_2 += ascii_letters.index(common) + 1 print(f"Expected part 1: {part_1}", file=sys.stderr) print(f"Expected part 2: {part_2}", file=sys.stderr) if __name__ == "__main__": generate() |
tubby.nl - Artes Moriendi - q1 - bf1942 - WoT - pubg - LinkedIN
Without nipples, boobs are pointless - 365 project - In mijn hoofd is het alle dagen Kerstmis - What type of bees make milk? Boobies! - What type of bees are scary? BoooOOOOOooobeees! - Cactusliefhebster
Enter multitheading: 37472us. 7,4% van de challenge van @Voutloos.oisyn schreef op zaterdag 3 december 2022 @ 03:54:
313ms met een AVX2 string-to-int conversie
Kan waarschijnlijk nog sneller door niet ieder nummer naar een 32-bits getal te converteren, maar de digits in een 16x16-bits breed AVX2 register te laten staan en die op te tellen, en aan het eind pas de conversie naar een 32-bits getal te doen.
.edit:
spoiler:Time: 260831 us
Max: 184028272
Top 3: 549010145
261ms. Tijd om naar bed te gaan
[ Voor 7% gewijzigd door .oisyn op 03-12-2022 11:23 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
.oisyn schreef op zaterdag 3 december 2022 @ 11:07:
Terwijl jullie met dag 3 bezig zijn ga ik ondertussen nog even door op dag 1.
[...]
Enter multitheading: 37472us. 7,4% van de challenge van @Voutloos
.edit: https://github.com/oisyn/Advent2022/tree/master/Problem1
Wel even nog die grote db in de dir gooien.
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
In python duurt mijn oplossing met sets 5.491s voor part1 en 6.1849s voor part 2, de gegenereerde invoerdata was 170Mb groot.MrHaas schreef op zaterdag 3 december 2022 @ 10:26:
Ik heb net als meeste zo te zien de O(n^2) manier gebruikt, maar moet wel O(n*log(n)) kunnen denk ik.
Mocht iemand zin hebben, hier een generator voor grotere cases:
[ Voor 3% gewijzigd door bertware op 03-12-2022 12:40 ]
Wie du mir, so ich dir.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Zo, weekend en inderdaad vandaag kan het al stukMrHaas schreef op zaterdag 3 december 2022 @ 10:26:
Ik heb net als meeste zo te zien de O(n^2) manier gebruikt, maar moet wel O(n*log(n)) kunnen denk ik.
Mocht iemand zin hebben, hier een generator voor grotere cases:
Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #!/usr/bin/env python3 import random import sys from string import ascii_letters random.seed(1337) NUMBER_OF_SETS = 100 LIMITS = [100_000, 500_000] def generate(): part_1 = 0 part_2 = 0 for n in range(NUMBER_OF_SETS): chars = list(ascii_letters) random.shuffle(chars) common = chars.pop() for i in range(3): char_set = chars[i * 17 : i * 17 + 17] char_set_common = char_set.pop() k = random.randint(*LIMITS) parts = [ random.choices(char_set[:8], k=k) + [char_set_common], random.choices(char_set[8:], k=k - 1) + [char_set_common, common], ] random.shuffle(parts[0]) random.shuffle(parts[1]) random.shuffle(parts) part_1 += ascii_letters.index(char_set_common) + 1 print("".join(parts[0] + parts[1])) part_2 += ascii_letters.index(common) + 1 print(f"Expected part 1: {part_1}", file=sys.stderr) print(f"Expected part 2: {part_2}", file=sys.stderr) if __name__ == "__main__": generate()
$ python3 -c 'for a, b in ["ab", "cd", "ef"]: print(a*1000000+"X"+b*1000000+"X")' > 3.in.groot
[ Voor 9% gewijzigd door Velvet op 06-12-2022 21:38 ]
Fujifilm XT-20 | Fuji lenzen | Vintage lenzen
Het leven is te kort om te testen
DataGhost schreef op zaterdag 3 december 2022 @ 13:18:
[...]
Zo, weekend en inderdaad vandaag kan het al stukVoor mij was O(n*log(n)) de "naïeve" oplossingsrichting, misschien heb ik dit te vaak gedaan. Maar ik begon het topic bij te lezen en zag als eerste de code van @jmerle dus heb direct ook een grote test-input gemaakt. Niet met zo'n hele generator zoals jij maar ik keek gewoon naar de code / het algoritme en daarmee was het heel makkelijk een worst-case input te maken met een simpele
$ python3 -c 'for a, b in ["ab", "cd", "ef"]: print(a*1000000+"X"+b*1000000+"X")' > 3.in.groot
Omdat ik hem toch al gemaakt had staat 'ie op https://dataghost.com/aoc/2022/3.in.groot.gz met als uitkomst dus resp. 150 en 50 voor beide delen. Mijn algoritme was er in 0.1s mee klaar terwijl die met de code van @jmerle bijna 26 seconden bezig was op deel 1, deel 2 niet getest maar het zal niet sneller zijn.
Ook mijn code dan maar: https://gitlab.dataghost....ent-of-code/-/snippets/31
TrailBlazer schreef op zaterdag 3 december 2022 @ 12:39:
spoiler:Bij deel twee vind ik het wel apart dat er meerdere groepen zijn met dezelfde badge.
Ja, bizar, net ff zelf mee gespeeld op https://chat.openai.com/chat door er gewoon de hele AoC tekst in te plakken. Je krijgt beknopte samenvatting van het probleem met hele lappen voorbeeldcode die grotendeels klopt.Ook mooi om te zien hoe goed OpenAI's modellen zijn, het schijnt dat de 1e plek op deel 1 (10 seconden) en de 2e plek op deel 2 geautomatiseerd behaald zijn (zie https://twitter.com/ostwilkens/status/1598458146187628544).
Ik had exact hetzelfde. Ook bij dag 1 werd er al geaggregeerd. Ben net even een half uurtje bezig geweest of er ook iets voor was, maar kom toch uit op een tussenliggende itterator oid. Sowieso wil ik mijn 'AoC frameworkje' even een leuke refactor geven. Ik merk dat ik toch nog relatief veel aan het boilerplaten ben telkens.Creepy schreef op zaterdag 3 december 2022 @ 11:59:
[...]
![]()
Maar goed, dag 3 ook weer klaar. Ik merk dat ik Java streams e.d. wel wil gebruiken maar als ik na 10 seconden googlen er niet achter kom hoe ik de boel kan groeperen voor deel 2 ,dan maar gewoon weer een for loop. Met iets als project reactor kan dit wel direct maar alweer geen zin om een hele reactive lib naar binnen te halen: https://github.com/CodeEn...er/aoc/aoc2022/Day03.java
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Waarom gebruik je voor de eerste helft nietjmerle schreef op zaterdag 3 december 2022 @ 13:46:
[...]
spoiler:Mijn focus ligt dit jaar volledig op de leaderboard i.p.v. efficiënte of nette code, maar ik was toch benieuwd waardoor mijn code zo ontiegelijk lang doet over "maar" 6 MB aan input. Zo te zien loopt mijn code in deel 1 vooral langzaam in het checken of een karakter van de eerste helft ook in de tweede helft zit (of in de 2e en 3e lijn in de groep voor deel 2). Met minimale wijzigingen draaien mijn twee delen ook in 0.1s op 3.in.groot: https://gist.github.com/j...7827968fa36639ead16d1cc91
[ Voor 12% gewijzigd door DataGhost op 03-12-2022 14:47 ]
Leuk!, heb mijn day1 oplossing (Java) hier tegenaan gezet en die deed er 43sec over. Heb eraan zitten schaven en nu zit ik op 2.9sSwedish Clown schreef op donderdag 1 december 2022 @ 09:39:
Bonus challenge for those that accept
![]()
***members only***
@P_Tingen ^
tubby.nl - Artes Moriendi - q1 - bf1942 - WoT - pubg - LinkedIN
Je bent er dus nog lang nietTubby schreef op zaterdag 3 december 2022 @ 20:32:
[...]
Leuk!, heb mijn day1 oplossing (Java) hier tegenaan gezet en die deed er 43sec over. Heb eraan zitten schaven en nu zit ik op 2.9s
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Goeie tip, ik ben van dit naar dit gegaan.DataGhost schreef op zaterdag 3 december 2022 @ 14:43:
[...]
Waarom gebruik je voor de eerste helft niet
spoiler:ook een set?
Me think, why waste time say lot word, when few word do trick.
DataGhost schreef op zaterdag 3 december 2022 @ 14:43:
[...]
Waarom gebruik je voor de eerste helft niet
spoiler:ook een set? Je kan deze opgave compleet zonder loops doen als je de door de library reeds gegeven standaardcontainers gebruikt. Maakt het verder qua looptijd niet sneller want nu heb je ook gewoon O(n*log(n)) op een iets andere manier, maar het is misschien eenvoudiger coden. Je gaat deze containers nog veeeeeeeel vaker nodig hebben deze maand dus je kan er beter alvast mee oefenen in de eerste week
Edit: looptijd klopt volgens mij niet, even rekenen, moment.
Edit2: oh nee toch wel, diff verkeerd gelezen.
Edit3: ook voor leaderboard ipv efficientie besparen de standaardcontainers je een hele bult code, je had de loops bijvoorbeeld niet uit hoeven typen want dat kan met sets gewoon in 1 operatie.
Je eerste versie zat niet zo gek ver van de genoemde 0.5s, maar nu ben je weer lekker aan het overdrijven..oisyn schreef op zaterdag 3 december 2022 @ 11:07:
Enter multitheading: 37472us. 7,4% van de challenge van @Voutloos
.edit: https://github.com/oisyn/Advent2022/tree/master/Problem1
{signature}
Always looking for developers wanting to work with Erlang.
1
| sum += char.IsUpper(line[i]) ? (line[i] - 'A' + 27) : (line[i] - 'a' + 1); |
Not just an innocent bystander
1
2
3
4
5
6
| class Day04Test : StringSpec({ "example part 1" { ::solution1 invokedWith exampleInput shouldBe 2 } "part 1 solution" { ::solution1 invokedWith input(YEAR, DAY) shouldBe 532 } "example part 2" { ::solution2 invokedWith exampleInput shouldBe 4 } "part 2 solution" { ::solution2 invokedWith input(YEAR, DAY) shouldBe 854 } }) |
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
[ Voor 8% gewijzigd door Diderikdm op 08-12-2022 14:22 ]
[ Voor 54% gewijzigd door breew op 04-12-2022 09:07 ]
Always looking for developers wanting to work with Erlang.
In C-ScherpSwedish Clown schreef op zondag 4 december 2022 @ 09:24:
Dag 4 in Erlang
Toch jammer dat het parsen van de input het grootste deel van de tijd in beslag neemt84% van de tijd word in beslag genomen door het preppen van de input.
1
| string[] s = System.IO.File.ReadAllLines( "aoc_2022_day01_large_input.txt" ); |
1
2
3
4
5
| StreamReader sr = new( "aoc_2022_day01_large_input.txt", System.Text.Encoding.ASCII ); while ( ( line = sr.ReadLine() ) != null ) { .... } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public static string[] ReadAllLines( string path, Encoding encoding ) { Validate( path, encoding ); string? line; List<string> lines = new List<string>(); using StreamReader sr = new StreamReader(path, encoding); while ( ( line = sr.ReadLine() ) != null ) { lines.Add( line ); } return lines.ToArray(); } |
[ Voor 24% gewijzigd door eheijnen op 04-12-2022 12:20 ]
Wie du mir, so ich dir.
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Zo scherp als een voetbal!
Die zijn dan ook echt niet nodigjmerle schreef op zondag 4 december 2022 @ 07:05:
Dag 4 in Python
spoiler:Vandaag een stuk langer gelezen dan nodig was. Ik kwam weer niet op het idee om sets te gebruiken
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
En dan nu als een memory mapped fileeheijnen schreef op zondag 4 december 2022 @ 10:38:
[...]
In C-Scherp
De eerste is de gemakkelijkste maar ook de traagste.
Als ik de grote file van day_01 in een keer in lees: ca. 11 - 12 Sec
C#:
1 string[] s = System.IO.File.ReadAllLines( "aoc_2022_day01_large_input.txt" );
Als ik het bestand regel voor regel doorloop in een loop dan is het ca. 2,2 sec
C#:
1 2 3 4 5 StreamReader sr = new( "aoc_2022_day01_large_input.txt", System.Text.Encoding.ASCII ); while ( ( line = sr.ReadLine() ) != null ) { .... }
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Ik heb in jouw code zitten neuzen maar dat zal nog even duren.
Wie du mir, so ich dir.
Anyone who gets in between me and my morning coffee should be insecure.
Nou ja ik ga natuurlijk los met AVX2 maar wat je iig wil doen is de file openen als memory mapped file en direct op die data werken ipv allemaal string objecten zitten te maken. Je zult dan wel zelf op zoek moeten naar de newlines en de regels omzetten naar getallen.eheijnen schreef op zondag 4 december 2022 @ 11:13:
[...]
Ik heb in jouw code zitten neuzen maar dat zal nog even duren.
Maar ga ik zeker nog eens naar kijken.
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Dan vraag ik me af, dat ik heb een gewone SSD heb die 550 MB/s sequentieel kan lezen..oisyn schreef op zondag 4 december 2022 @ 11:20:
[...]
Nou ja ik ga natuurlijk los met AVX2 maar wat je iig wil doen is de file openen als memory mapped file en direct op die data werken ipv allemaal string objecten zitten te maken. Je zult dan wel zelf op zoek moeten naar de newlines en de regels omzetten naar getallen.
Wie du mir, so ich dir.
Je besturingssysteem cachet de inhoud van bestanden, dus als je benchmarkt met een bestand van ~100 MB zoals hier, dan zal het bestand na de eerste executie volledig in RAM staan en maakt de snelheid van de vaste schijf niet uit.eheijnen schreef op zondag 4 december 2022 @ 11:31:
Dan vraag ik me af, dat ik heb een gewone SSD heb die 550 MB/s sequentieel kan lezen.
Als jij zulk soort tijden kunt realiseren heb jij dan een NVME schijf?
Dat was idd de redenering die ik volgde...Soultaker schreef op zondag 4 december 2022 @ 11:42:
[...]
Je besturingssysteem cachet de inhoud van bestanden, dus als je benchmarkt met een bestand van ~100 MB zoals hier, dan zal het bestand na de eerste executie volledig in RAM staan en maakt de snelheid van de vaste schijf niet uit.
Na een reboot of met bestanden die zo groot zijn dat ze niet in het geheugen passen zal disk I/O inderdaad de bottleneck gaan vormen bij dit soort problemen.
Wie du mir, so ich dir.
Ik had ook maar even een tekening gemaakt voor mezelf en toen bleek de logic heel simpel te zijn inderdaad.CMG schreef op zondag 4 december 2022 @ 11:45:
Wat me wel opvalt is dat een hoop mensen niet weten dat je voor 'enige overlap' maar 2 checks hoeft te doen; had het aan het eind van de video met een crappy MS-Paint actie nog even gevisualiseerd hoe je dat makkelijk kunt doen voor de gene die daar behoefte aan hebben 😊
*zucht*
Wie du mir, so ich dir.
Wat dan als je de volgende case hebt:CMG schreef op zondag 4 december 2022 @ 11:45:
Wat me wel opvalt is dat een hoop mensen niet weten dat je voor 'enige overlap' maar 2 checks hoeft te doen; had het aan het eind van de video met een crappy MS-Paint actie nog even gevisualiseerd hoe je dat makkelijk kunt doen voor de gene die daar behoefte aan hebben 😊
1
2
| <--> <--> |
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Het is makkelijker om je eerst af te vragen wanneer er géén overlap is. Stel we noemen de coordinaten a, b, c, d (met a ≤ b en c ≤ d). Dan zijn er precies twee mogelijkheden om geen overlap te hebben:Remcoder schreef op zondag 4 december 2022 @ 12:05:
[...]
Wat dan als je de volgende case hebt:
code:
1 2 <--> <-->
Dan ligt het eindpunt van de bovenste lijn wel na het beginpunt van de onderste lijn, maar er is géén overlap. Volgens de check die jij doet is er dan wel overlap. Tenzij ik iets verkeerd begrijp.
a--b c--d
a--b c--d
[ Voor 27% gewijzigd door Soultaker op 04-12-2022 12:29 ]
[ Voor 12% gewijzigd door Beneveerg op 04-12-2022 12:26 ]
Het leven is te kort om te testen
Maar dat is het niet alleen. Met een memory mapped file zie je direct het geheugen dat door de kernel wordt gebruikt om de file te lezen. De cache is natuurlijk een enorm voordeel, omdat het enige dat dan hoeft te gebeuren is het mappen van de betreffende pages in de address space van je proces. Maar ook als de data nog van disk moet komen is het een voordeel, omdat je direct met de betreffende data werkt ipv dat het eerst nog gekopieerd wordt naar user space en who knows wat er daarna nog mee gebeurt in het framework wat je gebruikt.eheijnen schreef op zondag 4 december 2022 @ 11:48:
[...]
Dat was idd de redenering die ik volgde...
[ Voor 9% gewijzigd door .oisyn op 04-12-2022 12:37 ]
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Zo ver was ik. Maar daar maakte ik ook gelijk de denkfouteheijnen schreef op zondag 4 december 2022 @ 12:32:
@Beneveerg
Het linker deel kan in het rechter deel liggen maar ook andersom...
1-1,2-2
of
2-2,1-1
Het leven is te kort om te testen
Als de eerste een match is hoef je niet meer verder te zoekenBeneveerg schreef op zondag 4 december 2022 @ 12:34:
[...]
Zo ver was ik. Maar daar maakte ik ook gelijk de denkfout
spoiler:Ik controleerde of het eerste deel in het tweede ligt én of het tweede deel in het eerste ligt. Dan krijg je bij twee gelijke delen een dubbele positieve uitkomst
Wie du mir, so ich dir.
In dit geval maakt het inderdaad weinig uitCreepy schreef op zondag 4 december 2022 @ 11:00:
[...]
Die zijn dan ook echt niet nodigJe oplossing is prima zo toch?
Dat is een creatieve oplossing voor het eerste deel (bij deel twee kan je ook met array's werken; functie om die te maken heb je al).Wraldpyk schreef op zondag 4 december 2022 @ 16:32:
Dit was een leuke! Moest even nadenken waarom ik meer matches had als dat nodig was.
Hier is mijn oplossing in JavaScript https://github.com/Topene...blob/2022/day4/program.js
Without nipples, boobs are pointless - 365 project - In mijn hoofd is het alle dagen Kerstmis - What type of bees make milk? Boobies! - What type of bees are scary? BoooOOOOOooobeees! - Cactusliefhebster
[ Voor 6% gewijzigd door Ghehe op 10-12-2022 23:39 ]
tubby.nl - Artes Moriendi - q1 - bf1942 - WoT - pubg - LinkedIN
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
There's no place like 127.0.0.1
Apple iPhone 16e LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq