aboutsummaryrefslogtreecommitdiff
path: root/2023/07
diff options
context:
space:
mode:
Diffstat (limited to '2023/07')
-rw-r--r--2023/07/7a.c58
-rw-r--r--2023/07/7b.c58
-rw-r--r--2023/07/in.txt1000
3 files changed, 1116 insertions, 0 deletions
diff --git a/2023/07/7a.c b/2023/07/7a.c
new file mode 100644
index 0000000..ffc9b5c
--- /dev/null
+++ b/2023/07/7a.c
@@ -0,0 +1,58 @@
1#include <inttypes.h>
2#include <stdio.h>
3#include <stdlib.h>
4#include <string.h>
5
6#define N 100000
7
8int value[255] = {
9 ['2'] = 2, ['3'] = 3, ['4'] = 4, ['5'] = 5,
10 ['6'] = 6, ['7'] = 7, ['8'] = 8, ['9'] = 9,
11 ['T'] = 10, ['J'] = 11, ['Q'] = 12, ['K'] = 13, ['A'] = 14
12};
13
14typedef struct {
15 char c[5];
16 int64_t b;
17} hand_t;
18
19int strength(hand_t h) {
20 int i, c2, c1, s, x[15];
21
22 memset(x, 0, 15 * sizeof(int));
23 for (i = 0, s = 0; i < 5; i++) {
24 s = s * 15 + value[h.c[i]];
25 x[value[h.c[i]]]++;
26 }
27 for (i = 2, c1 = 0, c2 = 0; i < 15; i++) {
28 if (c1 < x[i]) {
29 c2 = c1;
30 c1 = x[i];
31 } else if (c2 < x[i]) c2 = x[i];
32 }
33
34 return (c1*5 + c2) * 759375 + s;
35}
36
37int compare(const void *h1, const void *h2) {
38 return strength(*(hand_t *)h1) - strength(*(hand_t *)h2);
39}
40
41int main() {
42 char line[N];
43 hand_t hand[N];
44 int64_t i, n, p;
45
46 for (n = 0; fgets(line, N, stdin) != NULL; n++) {
47 memcpy(hand[n].c, line, 5);
48 hand[n].b = atoll(line+6);
49 }
50
51 qsort(hand, n, sizeof(hand_t), &compare);
52
53 for (i = 0, p = 0; i < n; i++)
54 p += hand[i].b * (i+1);
55
56 printf("%" PRId64 "\n", p);
57 return 0;
58}
diff --git a/2023/07/7b.c b/2023/07/7b.c
new file mode 100644
index 0000000..58716b3
--- /dev/null
+++ b/2023/07/7b.c
@@ -0,0 +1,58 @@
1#include <inttypes.h>
2#include <stdio.h>
3#include <stdlib.h>
4#include <string.h>
5
6#define N 100000
7
8int value[255] = {
9 ['2'] = 2, ['3'] = 3, ['4'] = 4, ['5'] = 5,
10 ['6'] = 6, ['7'] = 7, ['8'] = 8, ['9'] = 9,
11 ['T'] = 10, ['J'] = 1, ['Q'] = 12, ['K'] = 13, ['A'] = 14
12};
13
14typedef struct {
15 char c[5];
16 int64_t b;
17} hand_t;
18
19int strength(hand_t h) {
20 int i, c2, c1, s, x[15];
21
22 memset(x, 0, 15 * sizeof(int));
23 for (i = 0, s = 0; i < 5; i++) {
24 s = s * 15 + value[h.c[i]];
25 x[value[h.c[i]]]++;
26 }
27 for (i = 2, c1 = 0, c2 = 0; i < 15; i++) {
28 if (c1 < x[i]) {
29 c2 = c1;
30 c1 = x[i];
31 } else if (c2 < x[i]) c2 = x[i];
32 }
33
34 return ((c1+x[1])*5 + c2) * 759375 + s;
35}
36
37int compare(const void *h1, const void *h2) {
38 return strength(*(hand_t *)h1) - strength(*(hand_t *)h2);
39}
40
41int main() {
42 char line[N];
43 hand_t hand[N];
44 int64_t i, n, p;
45
46 for (n = 0; fgets(line, N, stdin) != NULL; n++) {
47 memcpy(hand[n].c, line, 5);
48 hand[n].b = atoll(line+6);
49 }
50
51 qsort(hand, n, sizeof(hand_t), &compare);
52
53 for (i = 0, p = 0; i < n; i++)
54 p += hand[i].b * (i+1);
55
56 printf("%" PRId64 "\n", p);
57 return 0;
58}
diff --git a/2023/07/in.txt b/2023/07/in.txt
new file mode 100644
index 0000000..bb85ed7
--- /dev/null
+++ b/2023/07/in.txt
@@ -0,0 +1,1000 @@
13A399 27
246645 201
38A9K4 40
488333 578
555353 817
699Q99 146
7553J5 45
8AAQ2A 547
9TKQ2K 120
1057592 534
117Q49K 229
12JK949 744
13688T6 657
1498888 392
154K638 337
16J8888 96
17Q92KJ 778
1848J96 374
19955J6 307
2062TT6 896
21934AK 776
2244654 720
23AJAAA 568
24K6J5Q 162
25T29A4 342
2646342 467
2722227 694
28TQ4TT 468
2988688 728
3088999 183
31Q7T6J 463
3292T9J 884
33KAQQQ 299
343275Q 913
35Q5535 82
3693A4J 48
37J9888 552
382QTQ4 846
3944554 795
40JJJJJ 348
41TT477 733
4258883 460
4377377 317
44357J3 725
45T9J4Q 346
4688228 953
47Q4858 982
485T5TT 405
49TTKTT 322
50QKKKK 197
51A5Q5A 956
522T22A 962
53TQJTT 734
5484TAK 360
55T39Q7 375
56QJJTT 925
5762236 928
58474T7 302
5937KK3 411
607J474 325
6155K5J 850
62TTJ2T 780
63Q5259 127
6493K6J 191
65T996T 333
6699929 193
679JKK3 115
682A647 409
693AAAA 966
7085K58 464
7122893 607
72QJQJJ 471
7359T9T 690
74K8484 167
75TKKK2 526
7644243 273
77KQ888 792
786J3K3 216
7944446 169
80325QK 461
8147T2T 990
827J78J 410
83A7JJA 562
842253J 598
85QK385 103
8665556 721
87TTQQ9 943
88Q4Q44 176
89JJ8JJ 539
90J799A 237
91994QK 510
9278996 458
93AK663 145
94QAA78 767
952Q662 797
96A696A 572
97QA82J 975
98T7KJQ 126
99722JT 416
1002J222 57
1016Q937 719
102AKJ58 39
103QQJQJ 582
104AJATT 187
105Q484A 384
106T9T87 272
1075T7T3 699
10844K44 812
10944228 505
110983Q5 444
11155355 74
112J2JJ2 353
113TJ2T2 883
114Q96J9 708
1157KKKK 447
116557J5 280
117AT4T7 407
118AQ9JJ 73
119K6K2J 597
120K7Q7K 394
121QQ4JQ 635
1222JK35 269
12394934 78
12499K9K 235
125K7K27 91
126QQQTQ 588
127773A3 702
12826232 110
129AA44A 909
13033Q3Q 313
13183335 518
1327AA84 287
133484T4 662
1347JKK7 29
1359J999 38
136Q58T9 17
13729JQ7 355
138772TT 783
139JK66K 473
140TKKTK 433
14152T56 318
1428Q734 628
143K43J7 226
144AA569 77
145J4A54 988
14684J4J 500
14797TQ9 240
1484K554 305
14927999 847
1508QQ83 85
15157638 521
152K5KK9 974
15397K3Q 234
154T88TT 747
15522JAT 71
156TJ337 983
157TA3QK 555
15887686 372
1595KKKK 828
160QK868 168
16199J59 813
162AA28A 875
16347382 837
16427K77 46
1652KKKJ 10
16622292 448
167K4KKK 774
168A3A9K 428
16999222 184
170Q9Q4Q 336
171QQQQ4 631
172KJQTT 249
173T3K46 644
174929J9 165
1752KK22 527
176AKAA5 358
177Q2224 369
178T273J 265
179282JJ 28
180Q488Q 513
18138J88 633
1823T3T3 283
18388855 863
1846J39Q 75
185J44K4 543
18627272 731
1875576K 880
188JTTKT 400
18955J55 750
1902QQ99 919
1914668Q 55
1929A999 5
193JK294 536
194TJ937 692
195KKKKJ 86
196647J4 625
19794227 308
1986AJ5J 841
19999AA5 224
200685A7 24
201TAAKK 112
202286K4 762
203J5Q8A 232
20433323 494
2052A6Q3 495
206JQKT2 37
207AAAQA 978
208K34KJ 703
2097J74T 994
2102J828 723
2115T3T4 535
21248658 140
213J99JJ 954
214TT826 678
215KK3J8 840
216TTT6J 439
2177QQ6T 589
21858585 963
219TTT2A 190
220JQT52 261
22166J76 682
222925KQ 951
223T3223 141
224J78QJ 785
225QQ277 567
2264K6TK 349
227K888K 309
2282J664 713
22975657 218
23096J96 614
23123727 610
23289477 134
233T8456 957
2347K47A 230
235A3AA3 107
23624KK3 538
23765J48 119
238JA98K 647
239KKT6T 935
240A4AAK 248
241K7779 225
242J5574 438
243Q6QQQ 697
24439QTT 469
245K9J62 282
2462K242 971
247QJJK6 41
24849J77 122
249393KK 403
250Q222Q 789
25188Q8Q 587
2524Q8AA 247
25363396 211
254KKJJK 111
255JQ4K7 918
25679775 506
257T5T55 532
2588J558 125
2592QAK8 641
26059548 537
261345K6 106
262Q42K7 695
26388KKK 934
2644J8J6 519
265644JJ 612
266J796K 368
2673J633 621
26866T3A 707
2697Q3K3 768
270A258Q 866
2719463A 820
27258555 843
27336T4J 914
27496K4A 8
275Q34J7 654
27688QAA 651
277AA5J5 58
27873333 740
279JTT9T 609
2803QQQQ 871
28133957 442
28284888 446
28383Q83 742
284K2K3K 243
285JKJ94 377
286K62K2 385
2876QJ87 704
288847J7 61
28987J89 594
29077JQQ 54
29156KA5 56
292AAQQ9 233
293A8AKT 236
29437KKA 711
295J8279 244
296J2Q23 987
297666J6 939
2983JJ77 16
299QQQKQ 104
30096QQ4 398
301J38JA 585
3028QKQ8 899
3034TJK2 806
30466686 421
3055T4T5 889
306K4944 206
30765KQ6 443
30836366 59
309TJT36 996
310JAA3A 367
3114985K 395
312999QQ 926
313832J6 821
31488K7K 890
315J7777 902
31635855 991
317332KK 710
31876AT7 365
319533K3 65
320AAAA9 864
32145TT4 758
322TJJTT 418
323282TT 178
324T536K 474
325J5J3A 259
326Q3QAA 796
327222JJ 793
328Q4666 64
32993TT9 219
33069555 26
331449JA 238
33264935 754
3337K24K 622
334Q7999 932
33555474 288
336J5QQ5 929
337J794A 669
33844K4K 634
3398T6A5 808
34077252 7
341JA8Q4 70
3423JTKJ 181
34334433 845
344A3444 548
34584889 262
3464A9TQ 32
34785A88 189
34873883 321
3497T776 274
350K62QJ 138
351TQ7TQ 80
3526A7AA 786
353TA379 872
35425T33 584
35573747 965
356Q28KQ 1000
3572A222 144
35894993 345
359A9238 172
3608468T 630
36199646 649
36269KK7 210
363QK5K6 457
3646QJ6Q 12
36536339 643
36688A4J 63
367K57JK 549
36877888 382
369T4J56 198
370AQQA7 481
371644K2 492
372T46AA 397
3735J3TJ 861
374J7J79 20
3753333A 42
376QQ555 892
3773AJT5 36
378J4K8A 208
379874TJ 376
380J999J 215
381A8AK3 782
38284444 504
383TT2TT 905
3848746J 752
385AA5A5 449
386A75JT 204
38755595 379
388KK665 775
38922244 364
39022283 152
391AA25A 149
392AA3KA 826
393K399K 981
39493384 97
39546494 347
3963TQJ4 19
397KKK7Q 158
398776J2 267
3997A77J 486
400A4454 9
4016857K 858
4023J3TT 435
403339J3 99
404JAQJQ 105
40582367 571
4063QQ3Q 556
407QJTJQ 599
408696T3 334
409JKA22 829
410J6686 576
41192Q4J 217
4128288K 289
4137JJKA 904
41433383 613
415J339T 315
41688483 503
4179995A 319
4188K92J 483
419TJ244 266
420KJ957 574
42174A44 148
42277KK7 591
423QJQ75 898
42488J8J 885
42592K54 137
42664647 579
42766226 560
428JJ488 839
42943J42 673
4303K3K3 849
43199977 108
432JTT47 113
4332634T 68
434TJQT5 838
43577Q77 763
4362AAKA 972
43778QJ7 257
4386J923 544
4392J2KK 164
440259K3 882
44188K78 602
4424786Q 924
44342444 650
4448536T 52
445AQTT5 546
4463333J 581
4473K984 501
448A8832 685
44934J55 133
45062985 700
4514353J 386
45244454 23
45377772 116
45465665 679
455KKK7J 124
456A7578 749
4575AQ54 396
4587KK8Q 807
4597T7T8 911
46073JJT 157
46198A99 753
462446J4 477
4634T43A 205
464TT999 798
46588885 915
4669Q64J 659
4677767K 357
468A5329 559
46985KKK 739
4709969J 714
471QJQQ9 427
472KT4KT 15
4735T5J5 638
474J74AJ 736
47556666 524
4765T558 930
4772233A 350
4787AA4A 502
479QAAA7 595
4807737T 151
481JQ4Q6 677
48267864 691
4832KK3Q 117
4848272K 414
48575J57 159
486443J4 479
48755KK5 207
488K88TK 910
4893Q9J9 332
490JAJAJ 338
49169369 339
49282KJ6 335
493K39KK 773
49499492 422
4953T663 270
496T5958 328
4979A45K 715
49823593 922
499JKK37 765
500KJKT7 769
501Q74QQ 173
5026232T 729
503227Q2 436
5047AQK4 430
5058Q4JQ 509
506J8248 297
507TT779 306
508A3K34 852
50997228 832
510TJTJ7 300
511A8898 553
51282TJQ 4
51392738 131
514AAAJJ 440
515TT972 51
51669AQK 646
517QQ7QJ 705
5184JK85 718
5197Q63T 220
52044A24 737
5217QAQT 292
52266699 979
5233Q974 329
524TTT6T 648
52585288 686
526989QT 278
5277Q6AK 964
52866466 251
52999744 271
530TTQTQ 163
5313433T 177
532K2333 142
533QQ4Q4 938
5349Q6Q9 787
53547T63 831
5362J56T 493
53794494 72
53825552 869
539936K2 390
540A8AA8 605
5413TT35 727
5422A24T 129
54394999 323
54464A2J 824
545K7676 756
546QQQQ7 18
547882J8 748
5482J77A 611
549222TJ 959
550T6266 722
551823J3 627
5528T569 771
55358KK3 331
55459329 209
555K9K87 6
55682484 150
5579444A 98
558TQ445 487
559J999K 462
560JT4TT 246
5615A455 640
56267KAJ 687
5636A83J 570
56436J6J 90
5656AK6A 573
56688K88 781
5675A3K4 931
56822J27 499
56944T44 948
570K44TT 213
571554K5 927
5726528A 202
573999JT 667
5747J256 401
575A2272 937
5762QJ3Q 900
57763736 973
57832522 933
579T666T 664
58088992 706
581JK267 603
582QQ99Q 316
583AKKKK 507
5848688J 862
58548858 970
58666229 378
587K495Q 14
58879539 761
589A33K3 491
590QAQQQ 417
591T92JA 620
592AQQ8J 475
59364A4K 295
5944A824 231
5958KTK3 453
596229K5 969
597Q3Q53 284
598Q6K34 35
599QJQ8Q 402
60039922 69
601J9TK8 920
6024Q3K8 881
603454AA 999
604556Q9 531
60522K22 496
6066AA39 291
607792K3 810
608TQQTJ 660
609J677K 764
610QTTTT 998
61122223 529
6123333Q 842
6132AAJA 755
614J64K6 466
615TJA4T 693
616J2622 441
61742442 566
618754K8 459
61935826 976
6204743T 676
621693TA 672
62258887 391
623K4899 434
624TTTT3 88
625356T2 894
62677784 212
6273373T 399
62878777 895
629Q97TT 950
63088T8T 760
631J48K2 663
632J3A3A 424
633555T5 25
63437373 389
635J6J46 174
6364TAKT 171
6376TKQ7 624
6385A775 3
639TT3T3 326
64028558 489
641TJ38T 936
6426AK66 254
64344664 223
64477QQ7 87
645Q2829 675
6465TTJ5 995
647T2T9J 454
6487878A 264
64983843 84
650JKKK3 802
65198436 192
6523AA22 940
653555A5 136
654J333J 221
65597KJ3 636
656JK582 801
6575Q82K 515
65825J2T 180
65934234 746
660JQ4K9 255
661224J2 668
66268999 639
6637T77T 886
6646A92Q 629
665JJ55J 161
66699599 429
6676JQ3Q 43
6684699A 361
66975AT2 917
670T9TTT 514
67155A95 551
672J6A96 47
673AAJAT 617
67464669 222
675QQ9QQ 626
67644J44 688
677Q3355 92
678J8J8J 835
679T4382 363
680J359A 296
68149Q49 653
682AAT66 908
68344T72 961
684AKA44 901
68549994 290
686A344A 732
687JJQJK 777
688J8JQ8 819
689A89T9 565
69072A72 868
691K7867 153
692K6663 179
693K76K7 854
6949T265 419
6959K7K9 865
6967797J 426
69725KKJ 670
69875575 11
69975955 431
700TK99Q 684
701KJ273 76
70257525 285
703J3AAJ 263
704Q7QQT 590
705Q77AQ 879
70633626 423
707AAA77 139
70876584 730
7092K9QQ 356
71022225 857
71144KKK 656
712954K6 814
71379TA5 135
714KQKKJ 62
7155QQ88 311
71677K87 452
717ATTTT 370
718J64QA 815
71929399 985
7202T792 351
7215782A 324
72257T74 294
723TQJ53 182
72442222 645
725K4Q92 320
72677A7K 583
727AA999 977
728T77TK 279
7295T586 799
7306K67Q 301
7316J8J2 67
73299JJT 344
733A395K 540
73435AAA 779
73568QT3 557
73645T3K 175
737587Q2 717
7388QK39 616
73973574 550
740T8A36 986
741333AA 800
7422KKKK 393
7439Q6T9 250
744A88A8 203
745J4J44 194
746848J8 281
7475A49Q 44
7488J88A 406
7498JTTT 877
75077767 955
75122K46 199
7526A9AT 387
753T5Q7K 482
75452999 577
755Q6685 632
756TQJQQ 525
75777477 712
758K5656 601
759KKA7A 380
760AA66A 373
76183ATT 942
7623JJ9K 508
76389988 791
764TQ746 757
7658J99T 743
766KKK22 642
767J44K2 980
768K9KAA 830
7699AAA9 260
770558J5 870
771KQKK2 352
772JT4T4 498
773K647T 967
7749K364 569
77544833 844
776T2922 856
777T3463 276
7782TTT2 60
779Q542A 724
7807J724 992
781KT92K 286
7828K388 888
7834394Q 600
784Q747Q 818
785433J4 945
78666J45 381
78755J59 912
7889A5A5 606
7893K98A 195
7909J49A 523
7912642J 944
7929K8Q7 89
7933J335 241
794J639J 564
79563J79 383
7965Q4J7 455
797777T7 674
7986793A 166
799KK9KK 277
8004TA95 873
801KQJA9 81
8022T777 834
8034K44A 109
80493572 312
80533537 258
806756KQ 304
8074J449 770
80827JKQ 412
809KK8KK 596
810J9666 415
81134943 93
81285J6K 404
813J6QJ5 118
8144A452 343
8157548A 327
8166644J 472
817T3A7Q 887
818T3J3J 661
819QQ79Q 516
82073JAT 592
8212QQQJ 413
822QJ523 541
82382878 488
824722T2 256
8254KA4K 923
82696T99 490
8273AKK6 696
8286J6JJ 147
829922JA 593
830J88K6 371
83152245 867
83284664 637
833T2T22 853
834T26A9 952
8358686J 253
836J6AA3 53
8376A65A 701
838JAJTA 745
8393843A 859
84039399 114
841J28Q3 121
84298KT4 13
843TTQTA 772
84439KTT 683
84553J53 298
84647434 671
8474J33Q 542
8489Q9J9 214
849TTTT8 984
850A45K7 891
851K488K 916
852AJ636 997
8537QQQ7 563
85468877 359
855655QQ 790
8563AA4A 855
857T4TTT 958
8589246Q 666
85985K48 485
860AJ283 484
86154J5K 21
862KK9K9 2
863Q69Q3 22
864J4555 809
865J322J 921
866752J5 530
8676K43K 480
8686AAAA 836
86992A29 803
87066888 665
87125529 83
8722AJ22 558
87389999 476
874Q8777 155
8757787J 388
876Q2765 123
877TJ2TK 833
87855AA5 903
87922662 33
8807QQQ2 575
8817J77J 561
88272878 874
883QQJQQ 154
884T693Q 520
8855TT3T 31
886JQQ44 340
8872JJ2Q 804
888J24T2 784
889K7J3J 811
8907KTJT 156
8918848Q 228
89244944 947
893K5426 893
894A55A8 655
895AAKK8 619
89675555 751
897Q2222 816
898TJJ9J 906
899J4224 314
90026A7K 738
90197J54 1
9027KK7K 794
9033KKK5 451
904955K9 827
905Q9QA2 293
906J2A28 200
907J2K77 341
90883888 196
909J97K7 823
91075TJ9 186
911J7638 49
91246K36 128
91392JJJ 735
91429A87 185
91589449 100
9163KAJK 445
917QQ343 586
9188466J 79
919T3T37 362
920252T4 528
921A3A5J 242
9226QQQT 822
9237AJA6 615
924K9625 268
925KK3AK 517
9265Q5Q8 658
927T87K3 618
92857629 788
929A7A7Q 160
930889TQ 741
931TT59T 425
932Q2KQJ 30
933A4K3K 143
9346664K 456
935KK4J4 726
936TTTTJ 437
937QT824 132
938J555J 478
93975KK9 354
94094979 34
941K846J 432
942QQ887 130
943TT97T 170
94466TQ6 878
94557K78 993
94688JK8 608
947AK5Q3 907
948AATAA 989
949QJQ8J 533
9508QQQQ 522
9515JQ49 102
952T3T65 188
95366446 759
9543Q695 275
955AAQTA 689
95643J33 623
957TJ444 968
958Q28Q2 330
959J777T 450
960QT3JQ 420
961T327A 897
962QKQKK 580
96392KA7 946
9647A93K 497
9656KAAA 239
966889TA 50
967K5KK5 511
968J443J 303
969TTT7J 310
970QAK8A 252
971J8658 805
972896K6 680
97388482 876
97469QJQ 408
9754A3J2 941
9768868T 94
9777766Q 851
97862J25 825
9793TT9T 716
980Q5KKK 860
981K7488 95
98233343 766
983JT888 366
984J8885 681
985J66J6 554
986JA65K 604
987QTJ44 848
988583QJ 465
98989Q79 66
99027477 512
991JTK33 101
992TTTQK 652
993A4ATA 545
994J3A33 470
99534QAK 245
9966Q668 698
99766777 709
9985K557 227
99943666 949
100066A6A 960

Generated with cgit - Back to sebastiano.tronto.net