diff --git a/.gitignore b/.gitignore index ecbdc2385f..80f7631497 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +/*.ys /Cache/ /Meta/ /rosettacode.log diff --git a/Lang/YAMLScript/Luhn-test-of-credit-card-numbers b/Lang/YAMLScript/Luhn-test-of-credit-card-numbers new file mode 120000 index 0000000000..f96e4c4d21 --- /dev/null +++ b/Lang/YAMLScript/Luhn-test-of-credit-card-numbers @@ -0,0 +1 @@ +../../Task/Luhn-test-of-credit-card-numbers/YAMLScript \ No newline at end of file diff --git a/Lang/YAMLScript/Validate-International-Securities-Identification-Number b/Lang/YAMLScript/Validate-International-Securities-Identification-Number new file mode 120000 index 0000000000..40c80b8d7d --- /dev/null +++ b/Lang/YAMLScript/Validate-International-Securities-Identification-Number @@ -0,0 +1 @@ +../../Task/Validate-International-Securities-Identification-Number/YAMLScript \ No newline at end of file diff --git a/Task/Best-shuffle/YAMLScript/best-shuffle.ys b/Task/Best-shuffle/YAMLScript/best-shuffle.ys index 2874ddd1dd..40b2a8e761 100644 --- a/Task/Best-shuffle/YAMLScript/best-shuffle.ys +++ b/Task/Best-shuffle/YAMLScript/best-shuffle.ys @@ -1,8 +1,9 @@ !YS-v0 -defn main(input): - say: read-string(input) - .map(best-shuffle):vec +defn main(*inputs): + each input inputs: !:say + apply format '%s, %s, (%d)': + best-shuffle(input) defn best-shuffle(s): ref =: s:group-indices:cycles diff --git a/Task/Even-or-odd/YAMLScript/even-or-odd.ys b/Task/Even-or-odd/YAMLScript/even-or-odd.ys index c0a1aa7de0..36ee519cd2 100644 --- a/Task/Even-or-odd/YAMLScript/even-or-odd.ys +++ b/Task/Even-or-odd/YAMLScript/even-or-odd.ys @@ -1,6 +1,7 @@ !YS-v0 -defn main(x): - if x:even?: - say: "$x is even" - say: "$x is odd" +defn main(*xs): + each x xs: + if x:even?: + say: "$x is even" + say: "$x is odd" diff --git a/Task/Factorial/YAMLScript/factorial.ys b/Task/Factorial/YAMLScript/factorial.ys index 06c6ba6aef..29d50ba6fa 100644 --- a/Task/Factorial/YAMLScript/factorial.ys +++ b/Task/Factorial/YAMLScript/factorial.ys @@ -1,7 +1,10 @@ !YS-v0 -defn main(n=10): - say: "$n! -> $factorial(n)" +defn main(*ns): + each n ns: + say: "$n! -> $factorial(n)" defn factorial(x): - 2 .. x: .mul(*) + if x <= 2: + (x ||| 1) + (2 .. x).mul(*) diff --git a/Task/Function-definition/Tcl/function-definition-3.tcl b/Task/Function-definition/Tcl/function-definition-3.tcl new file mode 100644 index 0000000000..e2a1260e67 --- /dev/null +++ b/Task/Function-definition/Tcl/function-definition-3.tcl @@ -0,0 +1,13 @@ +proc multiply { a b args } { + + set product 1 + + foreach m [list $a $b {*}$args] { + + set product [expr {$product * $m}] + } + + return $product +} + +puts stdout [multiply 3 4 7 9 -2 -5 ] diff --git a/Task/Greatest-common-divisor/Elena/greatest-common-divisor.elena b/Task/Greatest-common-divisor/Elena/greatest-common-divisor.elena index 8d3b778db8..5dd09f89da 100644 --- a/Task/Greatest-common-divisor/Elena/greatest-common-divisor.elena +++ b/Task/Greatest-common-divisor/Elena/greatest-common-divisor.elena @@ -17,7 +17,7 @@ gcd(a,b) printGCD(a,b) { - console.printLineFormatted("GCD of {0} and {1} is {2}", a, b, gcd(a,b)) + Console.printLineFormatted("GCD of {0} and {1} is {2}", a, b, gcd(a,b)) } public program() diff --git a/Task/Luhn-test-of-credit-card-numbers/YAMLScript/luhn-test-of-credit-card-numbers.ys b/Task/Luhn-test-of-credit-card-numbers/YAMLScript/luhn-test-of-credit-card-numbers.ys new file mode 100644 index 0000000000..6a2092d4d6 --- /dev/null +++ b/Task/Luhn-test-of-credit-card-numbers/YAMLScript/luhn-test-of-credit-card-numbers.ys @@ -0,0 +1,10 @@ +!YS-v0 + +defn main(*nums): + each cc nums: + say: "$cc - $if(cc:luhn? 'valid' 'invalid')" + +defn luhn?(cc): + map(mul cc:digits:reverse [1 2]:cycle) + .map(\(I(_ / 10) + (_ % 10))):sum + .mod(10):zero? diff --git a/Task/Validate-International-Securities-Identification-Number/YAMLScript/validate-international-securities-identification-number.ys b/Task/Validate-International-Securities-Identification-Number/YAMLScript/validate-international-securities-identification-number.ys new file mode 100644 index 0000000000..3633f68190 --- /dev/null +++ b/Task/Validate-International-Securities-Identification-Number/YAMLScript/validate-international-securities-identification-number.ys @@ -0,0 +1,18 @@ +!YS-v0 + +defn main(*nums): + each isin nums: + say: "$isin - $if(isin:isin? 'valid' 'invalid')" + +defn isin?(isin): + isin.re-matches(/[A-Z]{2}[A-Z0-9]{9}[0-9]/) && + isin.map(b36-10).apply(str):luhn? + +defn b36-10(c): + c =: c:I - 48 + if c > 9: (c - 7) c + +defn luhn?(cc): + map(mul cc:digits:reverse [1 2]:cycle) + .map(\(I(_ / 10) + (_ % 10))):sum + .mod(10):zero?