aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-25 20:53:56 +0100
committerAbigail <abigail@abigail.be>2021-11-25 20:53:56 +0100
commita6b407536002f1f2d000cec3d5519a6446aa1121 (patch)
treedf6bca6aec287a859e7bd97ff16f1a7cbb90f632
parent0c6f22ef70f5f2ce903f7195d8efb2af2ebbe8c4 (diff)
downloadperlweeklychallenge-club-a6b407536002f1f2d000cec3d5519a6446aa1121.tar.gz
perlweeklychallenge-club-a6b407536002f1f2d000cec3d5519a6446aa1121.tar.bz2
perlweeklychallenge-club-a6b407536002f1f2d000cec3d5519a6446aa1121.zip
R solution for week 135, part 2
-rw-r--r--challenge-135/abigail/README.md1
-rw-r--r--challenge-135/abigail/r/ch-2.r36
2 files changed, 37 insertions, 0 deletions
diff --git a/challenge-135/abigail/README.md b/challenge-135/abigail/README.md
index 8d165353e3..c6b1e98bb6 100644
--- a/challenge-135/abigail/README.md
+++ b/challenge-135/abigail/README.md
@@ -28,6 +28,7 @@
* [Node.js](node/ch-2.js)
* [Perl](perl/ch-2.pl)
* [Python](python/ch-2.py)
+* [R](r/ch-2.r)
* [Ruby](ruby/ch-2.rb)
* [Scheme](scheme/ch-2.scm)
* [Tcl](tcl/ch-2.tcl)
diff --git a/challenge-135/abigail/r/ch-2.r b/challenge-135/abigail/r/ch-2.r
new file mode 100644
index 0000000000..611ca95bce
--- /dev/null
+++ b/challenge-135/abigail/r/ch-2.r
@@ -0,0 +1,36 @@
+#
+# See ../README.md
+#
+
+#
+# Run as: Rscript ch-2.r < input-file
+#
+
+ord.0 <- as.integer (charToRaw ("0"))
+ord.9 <- as.integer (charToRaw ("9"))
+ord.A <- as.integer (charToRaw ("A"))
+w <- c (1, 3, 1, 7, 3, 9, 1)
+
+stdin <- file ('stdin', 'r')
+repeat {
+ n <- readLines (stdin, n = 1)
+ if (length (n) == 0) {
+ break
+ }
+ valid <- 1
+ c <- grep ("^[0-9BCDFGHJKLMNPQRSTVWXYZ]{6}[0-9]$", n)
+ if (length (c) == 0) {
+ cat ("0\n")
+ next
+ }
+
+ check <- 0
+ index <- 0
+ for (char in strsplit (n, split = "") [[1]]) {
+ a <- as.integer (charToRaw (char))
+ a <- a - (if (a <= ord.9) ord.0 else ord.A)
+ index <- index + 1
+ check <- check + a * w [index]
+ }
+ cat (if (check %% 10 == 0) 1 else 0, "\n")
+}