From 73c9e177dd18e885ebb230b0eea5c4330d406b9a Mon Sep 17 00:00:00 2001 From: Dimitri Lozeve Date: Tue, 19 May 2020 18:58:46 +0200 Subject: [PATCH] Solve problem 7 task 3 --- Contest2020/Contest2020.dyalog | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Contest2020/Contest2020.dyalog b/Contest2020/Contest2020.dyalog index ff76227..e917adf 100644 --- a/Contest2020/Contest2020.dyalog +++ b/Contest2020/Contest2020.dyalog @@ -141,8 +141,21 @@ ∇ digits←ReadUPC bits ⍝ 2020 APL Problem Solving Competition Phase II - ⍝ Stub function for Problem 7, Task 3 - ReadUPC - ⍝ Put your code and comments below here + ⍝ Problem 7, Task 3 - ReadUPC + :If 95≠⍴bits ⍝ incorrect number of bits + digits←¯1 + :Else + ⍝ Test if the barcode was scanned right-to-left. + :If 0=2|+/bits[3+⍳7] + bits←⌽bits + :EndIf + digits←({¯1+lrepr⍳⍵}¨(7/⍳6)⊆42↑3↓bits),{¯1+rrepr⍳⍵}¨(7/⍳6)⊆¯42↑¯3↓bits + :If ~∧/digits∊0,⍳9 ⍝ incorrect parity + digits←¯1 + :ElseIf (⊃⌽digits)≠CheckDigit ¯1↓digits ⍝ incorrect check digit + digits←¯1 + :EndIf + :EndIf ∇ ∇ parts←Balance nums;subsets;partitions