Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

@ -0,0 +1,44 @@
PROGRAM MIDDLE
!$DOUBLE
FUNCTION LUNG(N)
LUNG=LEN(STR$(INT(ABS(N))))+1
END FUNCTION
FUNCTION NCNT(N)
NCNT=VAL(MID$(STR$(INT(ABS(N))),(LUNG(N)-1)/2,3))
END FUNCTION
FUNCTION EVEN(N)
EVEN=INT(N/2)=N/2
END FUNCTION
PROCEDURE NUMBER_EXAM(N->R$)
R$="" LG%=LUNG(N)-2
IF EVEN(LG%) THEN R$="?EVEN," END IF
IF LG%<3 THEN
R$=R$+"ONLY"+STR$(LG%)+" DIGIT"
IF LG%=1 THEN
R$=R$+"S"
END IF
END IF
IF RIGHT$(R$,1)="," THEN R$=LEFT$(R$,LEN(R$)-1) EXIT PROCEDURE END IF
IF LEFT$(R$,1)="?" THEN EXIT PROCEDURE END IF
IF R$<>"" THEN R$="?"+R$ EXIT PROCEDURE END IF
R$=STR$(NCNT(N))
IF LEFT$(R$,1)=" " THEN R$=MID$(R$,2) END IF
IF LEN(R$)=1 THEN R$="00"+R$ END IF
IF LEN(R$)=2 THEN R$="0"+R$ END IF
END PROCEDURE
BEGIN
DATA(123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345)
DATA(1,2,-1,-10,2002,-2002,0)
FOR I%=1 TO 17 DO
READ(N)
PRINT(N;" ",)
NUMBER_EXAM(N->R$)
PRINT(R$)
END FOR
END PROGRAM

View file

@ -0,0 +1,32 @@
' FB 1.05.0 Win64
Function middleThreeDigits (n As Integer) As String
If n < 0 Then n = -n
If n < 100 Then Return "" '' error code
If n < 1000 Then Return Str(n)
If n < 10000 Then Return ""
Dim ns As String = Str(n)
If Len(ns) Mod 2 = 0 Then Return "" '' need to have an odd number of digits for there to be 3 middle
Return Mid(ns, Len(ns) \ 2, 3)
End Function
Dim a(1 To 16) As Integer => _
{123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -123451, 2, -1, -10, 2002, -2002, 0}
Dim As Integer i
Dim As String result
Print "The 3 middle digits of the following numbers are : "
Print
For i = 1 To 16
result = middleThreeDigits(a(i))
Print a(i), " => ";
If result <> "" Then
Print result
Else
Print "Error: does not have 3 middle digits"
End If
Next
Print
Print "Press any key to quit"
Sleep

View file

@ -0,0 +1,4 @@
items::[123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345 1 2 -1 -10 2002 -2002 0]
mid3::{[d k];:[3>k::#$#x;"small":|0=k!2;"even";(-d)_(d::_(k%2)-1)_$#x]}
.p(mid3'items)

View file

@ -0,0 +1,22 @@
define middlethree(value::integer) => {
local(
pos_value = math_abs(#value),
stringvalue = #pos_value -> asstring,
intlength = #stringvalue -> size,
middle = integer((#intlength + 1) / 2),
prefix = string(#value) -> padleading(15)& + ': '
)
#intlength < 3 ? return #prefix + 'Error: too few digits'
not(#intlength % 2) ? return #prefix + 'Error: even number of digits'
return #prefix + #stringvalue -> sub(#middle -1, 3)
}
'<pre>'
with number in array(123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0) do {^
middlethree(#number)
'<br />'
^}
'</pre>'

View file

@ -0,0 +1,16 @@
import math
proc middleThreeDigits(i): auto =
var s = $abs(i)
if s.len < 3 or s.len mod 2 == 0:
raise newException(ValueError, "Need odd and >= 3 digits")
let mid = s.len div 2
return s[mid-1..mid+1]
const passing = @[123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345]
const failing = @[1, 2, -1, -10, 2002, -2002, 0]
for i in passing & failing:
var answer = try: middleThreeDigits(i)
except ValueError: getCurrentExceptionMsg()
echo "middleThreeDigits(",i,") returned: ",answer

View file

@ -0,0 +1,6 @@
: middle3
| s sz |
abs asString dup ->s size ->sz
sz 3 < ifTrue: [ "Too short" println return ]
sz isEven ifTrue: [ "Not odd number of digits" println return ]
sz 3 - 2 / 1+ dup 2 + s extract ;

View file

@ -0,0 +1,10 @@
n = 1234567
middle(n)
func middle nr
mnr = floor(len(string(nr))/2)
lennr = len(string(nr))
if lennr = 3 see "" + nr + nl
but lennr < 3 see "Number must have at least three digits"
but lennr%2=0 see "Number must have an odd number of digits"
else cnr = substr(string(nr),mnr,3) see cnr + nl ok

View file

@ -0,0 +1,16 @@
func middle_three(n) {
var l = n.len;
if (l < 3) {
"#{n} is too short"
} elsif (l.is_even) {
"#{n} has an even number of digits"
} else {
"The three middle digits of #{n} are: " + n.digits.ft(l-3 / 2, l/2 + 1).join
}
}
var nums = %n(
123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345
1 2 -1 -10 2002 -2002 0
);
nums.each { say middle_three(_) };

View file

@ -0,0 +1,7 @@
def (mid3 n)
withs (digits (with outstring # itoa
(pr abs.n))
max len.digits
mid (int max/2))
if (and odd?.max (max >= 3))
(digits mid-1 mid+2)

View file

@ -0,0 +1,10 @@
def middle3:
if . < 0 then -. else . end
| tostring as $s
| ($s | length) as $n
| if $n<3 or ($n % 2) == 0 then "invalid length: \($n)"
else (($n - 1) / 2) as $n | $s[$n - 1 : $n + 2]
end ;
(123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0)
| "\(.) => \( .|middle3 )"

View file

@ -0,0 +1,18 @@
$ jq -r -n -f Middle_three_digits.jq
123 => 123
12345 => 234
1234567 => 345
987654321 => 654
10001 => 000
-10001 => 000
-123 => 123
-100 => 100
100 => 100
-12345 => 234
1 => invalid length: 1
2 => invalid length: 1
-1 => invalid length: 1
-10 => invalid length: 2
2002 => invalid length: 4
-2002 => invalid length: 4
0 => invalid length: 1