diff --git a/32/solution.uiua b/32/solution.uiua index e69de29..a1cab51 100644 --- a/32/solution.uiua +++ b/32/solution.uiua @@ -0,0 +1,43 @@ +# project euler #32 + +# denote the digit distribution by a×b=c, where +# a is the number of digits in the multiplicand, +# b is the number of digits in the multiplier and +# c is the number of digits in the product. +# ⍉ 1×1=7 +# ⍉ 1×2=6 ≡ 2x1=6 +# ⍉ 1×3=5 ≡ 3x1=5 +# ⊚ 1×4=4 ≡ 4x1=4 only this +# ⍉ 2×2=5 +# ⊚ 2×3=4 ≡ 3×2=4 and this +# ⍉ 3×3=3 +# ⍉ ... +# because the other digit distributions go over +# or under too much. + +# get three numbers that form candidate +# index_permutation ? factors_and_product +n ← ⊕(⋕/⊂≡°⋕)⊙(+1⇡9) +# check pandigital candidate numbers +# factors_and_product ? is_pand_prod +c ← =/×⊃↙₂⊣ +# permutes a number +# n ? all_permutes_of_n +p ← □⋕⧅≠∞°⋕ +# join all permutations +# triple_baka ? combinations +j ← ≡⇌♭₂⊞⊂°□⊣⟜(♭₂/◇⊞⊂↙2) + +# generate solution for given digit distribution +# digit_distribution ? products +s ← ( + ◴⧅≠∞ # permutations of digits + ♭₂≡(j≡p n) # permute multiplicand, multiplier, product + ◴⊣⍉⊏⊸(⊚≡c) # check all hitherto permutations +) +s [2 2 2 2 1 1 1 0 0] # 2×3=5 +s [2 2 2 2 1 1 1 1 0] # 1×4=5 +/+◴⊂ + +# my online pad solution can be found here: +# https://uiua.org/pad?src=0_17_0-dev_2__IyBwcm9qZWN0IGV1bGVyICMzMgoKIyBkZW5vdGUgdGhlIGRpZ2l0IGRpc3RyaWJ1dGlvbiBieSBhw5diPWMsIHdoZXJlCiMgYSBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgbXVsdGlwbGljYW5kLAojIGIgaXMgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIG11bHRpcGxpZXIgYW5kCiMgYyBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBpbiB0aGUgcHJvZHVjdC4KIyDijYkgMcOXMT03CiMg4o2JIDHDlzI9NiDiiaEgMngxPTYKIyDijYkgMcOXMz01IOKJoSAzeDE9NQojIOKKmiAxw5c0PTQg4omhIDR4MT00IG9ubHkgdGhpcwojIOKNiSAyw5cyPTUKIyDiipogMsOXMz00IOKJoSAzw5cyPTQgYW5kIHRoaXMKIyDijYkgM8OXMz0zCiMg4o2JIC4uLgojIGJlY2F1c2UgdGhlIG90aGVyIGRpZ2l0IGRpc3RyaWJ1dGlvbnMgZ28gb3ZlcgojIG9yIHVuZGVyIHRvbyBtdWNoLgoKIyBnZXQgdGhyZWUgbnVtYmVycyB0aGF0IGZvcm0gY2FuZGlkYXRlCiMgaW5kZXhfcGVybXV0YXRpb24gPyBmYWN0b3JzX2FuZF9wcm9kdWN0Cm4g4oaQIOKKlSjii5Uv4oqC4omhwrDii5Up4oqZKCsx4oehOSkKIyBjaGVjayBwYW5kaWdpdGFsIGNhbmRpZGF0ZSBudW1iZXJzCiMgZmFjdG9yc19hbmRfcHJvZHVjdCA_IGlzX3BhbmRfcHJvZApjIOKGkCA9L8OX4oqD4oaZ4oKC4oqjCiMgcGVybXV0ZXMgYSBudW1iZXIKIyBuID8gYWxsX3Blcm11dGVzX29mX24KcCDihpAg4pah4ouV4qeF4omg4oiewrDii5UKIyBqb2luIGFsbCBwZXJtdXRhdGlvbnMKIyB0cmlwbGVfYmFrYSA_IGNvbWJpbmF0aW9ucwpqIOKGkCDiiaHih4zima3igoLiip7iioLCsOKWoeKKo-KfnCjima3igoIv4peH4oqe4oqC4oaZMikKCiMgZ2VuZXJhdGUgc29sdXRpb24gZm9yIGdpdmVuIGRpZ2l0IGRpc3RyaWJ1dGlvbgojIGRpZ2l0X2Rpc3RyaWJ1dGlvbiA_IHByb2R1Y3RzCnMg4oaQICgKICDil7Tip4XiiaDiiJ4gICAgICAgIyBwZXJtdXRhdGlvbnMgb2YgZGlnaXRzCiAg4pmt4oKC4omhKGriiaFwIG4pICMgcGVybXV0ZSBtdWx0aXBsaWNhbmQsIG11bHRpcGxpZXIsIHByb2R1Y3QKICDil7TiiqPijYniio_iirgo4oqa4omhYykgIyBjaGVjayBhbGwgaGl0aGVydG8gcGVybXV0YXRpb25zCikKcyBbMiAyIDIgMiAxIDEgMSAwIDBdICMgMsOXMz01CnMgWzIgMiAyIDIgMSAxIDEgMSAwXSAjIDHDlzQ9NQovK-KXtOKKggo=