aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConor Hoekstra <codereport@outlook.com>2024-09-16 17:32:09 -0400
committerConor Hoekstra <codereport@outlook.com>2024-09-16 17:32:09 -0400
commite1e776a79fe8866f189f4348e2f1feaeae47941f (patch)
tree6e16f54e5c0d7e2b0b6e6c25328d5473523965fc
parent6025c6799cf59bf7619b36916a2fcbe7ed4d687b (diff)
downloadperlweeklychallenge-club-e1e776a79fe8866f189f4348e2f1feaeae47941f.tar.gz
perlweeklychallenge-club-e1e776a79fe8866f189f4348e2f1feaeae47941f.tar.bz2
perlweeklychallenge-club-e1e776a79fe8866f189f4348e2f1feaeae47941f.zip
:sparkles: Week 287 in BQN
-rw-r--r--challenge-287/conor-hoekstra/ch-1.bqn22
-rw-r--r--challenge-287/conor-hoekstra/ch-2.bqn22
2 files changed, 44 insertions, 0 deletions
diff --git a/challenge-287/conor-hoekstra/ch-1.bqn b/challenge-287/conor-hoekstra/ch-1.bqn
new file mode 100644
index 0000000000..3c4cc95cc5
--- /dev/null
+++ b/challenge-287/conor-hoekstra/ch-1.bqn
@@ -0,0 +1,22 @@
+# For up to date code:
+# https://github.com/codereport/bqn-code/blob/main/pwc/287-1.bqn
+
+⟨Group⟩ ⇐ •Import "../lib/fun.bqn"
+⟨IsDigit, IsLower, IsUpper⟩ ⇐ •Import "../lib/string.bqn"
+
+MakeStrong ← {
+ r ← +´⌊3÷˜≠¨Group𝕩 # replacements for repeating
+ a ← 0⌈6-≠𝕩 # additions for length
+ l ← ∨´IsLower¨𝕩 # has upper
+ u ← ∨´IsUpper¨𝕩 # has lower
+ d ← ∨´IsDigit¨𝕩 # has digit
+ (r+a)⌈+´¬l∾u∾d
+}
+
+# Tests
+•Show MakeStrong "a" # 5
+•Show MakeStrong "aB2" # 3
+•Show MakeStrong "PaaSW0rd" # 0
+•Show MakeStrong "Paaasw0rd" # 1
+•Show MakeStrong "aaaaa" # 2
+•Show MakeStrong "aaaaaaaaa" # 3
diff --git a/challenge-287/conor-hoekstra/ch-2.bqn b/challenge-287/conor-hoekstra/ch-2.bqn
new file mode 100644
index 0000000000..85955cd170
--- /dev/null
+++ b/challenge-287/conor-hoekstra/ch-2.bqn
@@ -0,0 +1,22 @@
+# For up to date code:
+# https://github.com/codereport/bqn-code/blob/main/pwc/287-2.bqn
+
+⟨Split⟩ ⇐ •Import "../lib/string.bqn"
+
+RemSign ← (∨´"-+"=⊑)⊸↓
+ValidNat ← ∧´∊⟜('0'+↕10)
+ValidDec ← (×´×+´)·ValidNat¨·'.'⊸Split RemSign
+ValidInt ← ∧´·ValidNat∘RemSign¨'e'⊸Split
+ValidNumber ← (⊑'.'⊸∊)◶ValidInt‿ValidDec
+
+# Tests
+•Show ValidNumber "1" # 1
+•Show ValidNumber "a" # 0
+•Show ValidNumber "." # 0
+•Show ValidNumber "1.2e4.2" # 0
+•Show ValidNumber "-1." # 1
+•Show ValidNumber "+1e-8" # 1
+•Show ValidNumber ".44" # 1
+•Show ValidNumber "-." # 0
+•Show ValidNumber "-.1" # 1
+•Show ValidNumber "-.-1" # 0