aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRikedyP <rikedyp@gmail.com>2025-08-20 11:01:13 +0100
committerRikedyP <rikedyp@gmail.com>2025-08-20 11:01:13 +0100
commitaf21b591aa132d8ffb86b936da361a7d347f99a2 (patch)
tree70f20d0ba3c0410bda974facbadc771c897f7612
parent50bfba5118a09063523a28007a76ff4d831d27cf (diff)
downloadperlweeklychallenge-club-af21b591aa132d8ffb86b936da361a7d347f99a2.tar.gz
perlweeklychallenge-club-af21b591aa132d8ffb86b936da361a7d347f99a2.tar.bz2
perlweeklychallenge-club-af21b591aa132d8ffb86b936da361a7d347f99a2.zip
week 335 in APL
-rw-r--r--challenge-335/richard-park/apl/CommonCharacters.aplf34
-rw-r--r--challenge-335/richard-park/apl/FindWinner.aplf53
2 files changed, 87 insertions, 0 deletions
diff --git a/challenge-335/richard-park/apl/CommonCharacters.aplf b/challenge-335/richard-park/apl/CommonCharacters.aplf
new file mode 100644
index 0000000000..4ca916e3ca
--- /dev/null
+++ b/challenge-335/richard-park/apl/CommonCharacters.aplf
@@ -0,0 +1,34 @@
+ CommonCharacters←{
+ a←∪∊⍵
+ a/⍨⌊/+/a∘.=↑⍵
+ ⍝ Had thought ⊃∩/ would work
+ ⍝ then shamelessly stole from @code_report/@conor-hoekstra
+
+ tests←(
+ (
+ 'bella'
+ 'label'
+ 'roller'
+ )
+ (
+ 'cool'
+ 'lock'
+ 'cook'
+ )
+ (
+ 'hello'
+ 'world'
+ 'pole'
+ )
+ (
+ 'abc'
+ 'def'
+ 'ghi'
+ )
+ (
+ 'aab'
+ 'aac'
+ 'aaa'
+ )
+ )
+ }
diff --git a/challenge-335/richard-park/apl/FindWinner.aplf b/challenge-335/richard-park/apl/FindWinner.aplf
new file mode 100644
index 0000000000..a4b33a5fc5
--- /dev/null
+++ b/challenge-335/richard-park/apl/FindWinner.aplf
@@ -0,0 +1,53 @@
+ FindWinner←{
+ ⎕IO←0
+ Win←{3∊⊃,/+/¨(⍵)(⌽⍵)(0 0⍉⍵)(0 0⍉⌽⍵)}
+ board←(1 2⍴⍨≢⍵)@⍵⊢3 3⍴0
+ (a b)←1 2=⊂board
+ ⍝ who won is a, b or neither (0,1,2)
+ who←1⍳⍨Win¨a b
+ ⍝ draw if neither won and no gaps on board
+ who+←(2=who)∧(~0∊board)
+ who⊃'A' 'B' 'Pending' 'Draw'
+
+ tests←(
+ (
+ 0 0
+ 2 0
+ 1 1
+ 2 1
+ 2 2
+ )
+ (
+ 0 0
+ 1 1
+ 0 1
+ 0 2
+ 1 0
+ 2 0
+ )
+ (
+ 0 0
+ 1 1
+ 2 0
+ 1 0
+ 1 2
+ 2 1
+ 0 1
+ 0 2
+ 2 2
+ )
+ (
+ 0 0
+ 1 1
+ )
+ (
+ 1 1
+ 0 0
+ 2 2
+ 0 1
+ 1 0
+ 0 2
+ )
+ )
+
+ }