Jump to content

Hashtron inference: Difference between revisions

added Raku programming solution
(Added Algol 68)
(added Raku programming solution)
Line 688:
 
print(inference(42,64,[[0,2]]))</syntaxhighlight>
 
=={{header|Raku}}==
Translation of [[#Phix]] and [https://go.dev/play/p/AsmOzKWx7jB Go]
<syntaxhighlight lang="raku" line># 20240530 Raku programming solution
 
sub Inference($command, $bits, @program) {
my $out = 0;
 
return $out unless @program.Bool;
 
for ^$bits -> $j { # Iterate over the bits
my $input = $command +| ($j +< 16);
$input = Hashtron($input, @program[0][0], my $maxx = @program[0][1]);
for @program[1..*] -> ($s, $max) {
$input = Hashtron($input, $s, $maxx -= $max);
}
if ( $input +&= 1 ) != 0 { $out +|= 1 +< $j }
}
return $out;
}
 
sub Hashtron($n, $s, $max) {
# Mixing stage, mix input with salt using subtraction
my $m = $n - $s;
 
# Hashing stage, use xor shift with prime coefficients
for <-2 -3 +5 +7 -11 -13 +17 -19> -> $p {
$m = ($m +^ ($m +> $p)) +& 0xFFFFFFFF;
}
 
# Mixing stage 2, mix input with salt using addition
$m = ($m + $s) +& 0xFFFFFFFF;
 
# Modular stage using Lemire's fast alternative to modulo reduction
return (($m * $max) +> 32) +& 0xFFFFFFFF;
}
 
sub MAIN() {
say Inference(42, 64, (<0 2>,));
 
for 0..^256 -> $i {
say "$i ", Inference($i, 4, (
<8776 79884>, <12638 1259>, <9953 1242>, <4658 1228>, <5197 1210>,
<12043 1201>, <6892 1183>, <7096 1168>, <10924 1149>, <5551 1136>,
<5580 1123>, <3735 1107>, <3652 1091>, <12191 1076>, <14214 1062>,
<13056 1045>, <14816 1031>, <15205 1017>, <10736 1001>, <9804 989>,
<13081 974>, <6706 960>, <13698 944>, <14369 928>, <16806 917>,
<9599 906>, <9395 897>, <4885 883>, <10237 870>, <10676 858>,
<18518 845>, <2619 833>, <13715 822>, <11065 810>, <9590 799>,
<5747 785>, <2627 776>, <8962 764>, <5575 750>, <3448 738>,
<5731 725>, <9434 714>, <3163 703>, <3307 690>, <3248 678>,
<3259 667>, <3425 657>, <3506 648>, <3270 639>, <3634 627>,
<3077 617>, <3511 606>, <27159 597>, <27770 589>, <28496 580>,
<28481 571>, <29358 562>, <31027 552>, <30240 543>, <30643 534>,
<31351 527>, <31993 519>, <32853 510>, <33078 502>, <33688 495>,
<29732 487>, <29898 480>, <29878 474>, <26046 468>, <26549 461>,
<28792 453>, <26101 446>, <32971 439>, <29704 432>, <23193 426>,
<29509 421>, <27079 415>, <32453 409>, <24737 404>, <25725 400>,
<23755 395>, <52538 393>, <53242 386>, <19609 380>, <26492 377>,
<24566 358>, <31163 368>, <57174 363>, <26639 364>, <31365 357>,
<60918 350>, <21235 338>, <28072 322>, <28811 314>, <27571 320>,
<17635 309>, <51968 169>, <54367 323>, <60541 254>, <26732 270>,
<52457 157>, <27181 276>, <19874 227>, <22797 320>, <59346 271>,
<25496 260>, <54265 231>, <22281 250>, <42977 318>, <26008 240>,
<87604 142>, <94647 314>, <52292 157>, <20999 216>, <89253 316>,
<22746 29>, <68338 312>, <22557 317>, <110904 104>, <70975 285>,
<51835 277>, <51871 313>, <132221 228>, <18522 290>, <68512 285>,
<118816 302>, <150865 268>, <68871 273>, <68139 290>, <84984 285>,
<150693 266>, <396047 272>, <84923 269>, <215562 258>, <68015 248>,
<247689 235>, <214471 229>, <264395 221>, <263287 212>, <280193 201>,
<108065 194>, <263616 187>, <148609 176>, <263143 173>, <378205 162>,
<312547 154>, <50400 147>, <328927 140>, <279217 132>, <181111 127>,
<672098 118>, <657196 113>, <459383 111>, <833281 105>, <520281 102>,
<755397 95>, <787994 91>, <492444 82>, <1016592 77>, <656147 71>,
<819893 66>, <165531 61>, <886503 57>, <1016551 54>, <3547827 49>,
<14398170 43>, <395900 41>, <4950628 37>, <11481175 33>,
<100014881 30>, <8955328 31>, <11313984 27>, <13640855 23>,
<528553762 21>, <63483027 17>, <952477 8>, <950580 4>, <918378 2>,
<918471 1> )
)
}
}</syntaxhighlight>
 
You may [https://ato.pxeger.com/run?1=hVfdbltFEL7PBc8wtBHYjRPt7O7sj-JGwAWiEuUFUCu5yXFriO3KPyVVmyfhphdwyQvxNHy7s3bsUwRRm3jO2fn75puZ9e9_rCa_bj99-nO7mZ6nv7_4a719Rc8W027VLa67wen1cj6fLG5GdPpqtlmP6Ju3q-Xr1WQ-pA8nRDR_T3S63G7oKZnLk_Jk1W22q4U-3C5uu_V6r3Px3XJ5q6emyxW9rCbp_IpOf6EP9JiebbrVZNPR8l23os2bjsr7clodnc4Wb6unXVB09pEG0D0bE4fhZTu5P_bDZP1ms1ouBvrkIfafzQv8G1Wb88ndHc4evuIXe1slzP0rvrh48qKEOzgFEEWzgfB_fnfH7-j8qert7N-3v7MpDXYGzr56SkxD-hKQApYK5NnH8gx5Ituqc9-D-vLk_uSklO7B-eLBcYvzMT2f3c0Wr2m9mbzukP_sjtTnb7PNG1pPblGydT2wfbVZTa43s-WiVfl0XoBf0DmMagkfV18H5rbrju4AGB5Om8m3q9m8o-tlN53OrmfdQstZUB2fWzp3dCZ0FumcGf8hcfmcryon3u7Brb4H-H32Uv-Ut8MhkCJz9337uSTF5fNEyf5XqpObm9kuzwdHyLJvf2d5ebO9nayaabXxYzefrbqv1zSdrDcE291qMdnM3nW0WdK8KCxRrJvtHtBWuUHx9aSVCFk5-5nTVtbn3z77adDKuJ68P-hQj-yCH9FgbMhejYbDhwYzFxcvrYSK5myPZlF_BPnR6LDPZyMqRh7oPE4xBoo5JX81ojHb4BKxlVyknMVB8LYIPkh5Y1MRhHOEwOZqdGCLrfFFwXA5E1K2xJxcEaLJAUKo2myy9ZB89SIiDMEFCAfGRJLBY1vVXXQCwcQqBIFhk1kj5gx1E0OVvGVYNsEeG2NngBAbL3oqcZGcWhBrYNxw1NiiK-80h5yMp5zyZ9YSU44VshBNoBxMVXYhJ8pesfSQKCtgyLwcqz4OLGXJOGJq7NlloZRrFD4lfFbo2FgXKUX1YALqlSQdA5-EEyXNzgbOlJzqusgwZGsFgV-AwNUQPBvUvZeZRB8ppmbH4rPimnKwFIPXekWhKNWK8z5RdKlvxTFFW61k7zxFrpqOg6NotKLORApZrVhYCbFnxYGFFIKW3FuhIPpZgGTwSTWjoeCy0gKeEHPPionww00TEygo2hbAZBKF28YIO1LrPLbJg6tg37EhPEbRJVZe2OzQDVJphrQMkBJRwVgPU16TNAENIc4fVcsxAiGxGhPnjCOsKdgkRTA7hODDqFkXUiKfpRdUjs6ST5oFiIozNfAiQNsrR20wPpDX7rNBfIbA_fwi-tWLaxwyTN4HjSpHCIoyPqMlvKtRWUTvyNvQj0oMPFiFKpoIgaVVGgl6o6Z8BLG90RAFhIHQR91FEXI177FYwXRyuYYosGXJJe17NGCGoKkHj0xc7DEBrkMgJ0ocLlx0igiKGj2Eljr4BKExFsMGOvGogPCFdnPaAhYjCkecYptMhGvtN5sS-OaU-zbCC9708uMYirYCAhYEzNigAsZHhEINKhjxTFZaNUvRbeyZEiSIoSyN0Qy22jYVwQVPVgmHPzm2QMaSHYhhY58LUlrA6lAT1FfI6rC0WAAlkPrGgwwwxY1WxiQC-Y9NpQjuEesOyT74uENErC0LosVrMiah5TZtUGgc69PKxhJs1uXiChVYgbaYSRBim3K5eFRaYe9gWtky0Q6hwlbC08qQIpTKcBuYyBAJtqmdECQ8GnUpbNXUUQU5lW3itE9ZTCpoKbHQs7FUQWuYGMRqxjBjkv8XY5ht6ChwsLIPrAZeNtqmYssr7R0WTB8UovkxGPPW9yYoGgxLGKXTec7el2gUQDRJ2Te2NWnA6IGnhifMlShMjxZsUtkgnBsNXShrVIcPdmppQVbG4R2Xq0Bs2zvVFdvfyiif-EJZ5YNB94MpsU3CjKHKXnsMowmXRtapA2bjB_eMXldGkCiVG0eFBO1Wrxw1Ag-iJ8TDNVtwp7CYTZsqRqVedBg8Dp2ioydiOmZcBao-CuG9x1rVjcxBQGQlU5DAZYX2kEtoQSCqZcV5wYIMGgvoYjDz495W2Q06fABOAgi-f_1A5RJjYbUlU1Y5hBYaGGTRGa0XsLM4lvHUryQuOLhkgPdKx4yQipreiBjdUPmpVjAMTZIyA467CPQVFwsN9cLnfHJlFWojZgwkjIekn025ztW0MDtBCOqhjaeFnXxFw_Z0qFd9OrnXb63ty-vuS-w_ Attempt This Online!]
 
=={{header|Wren}}==
354

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.