Time for an 2014 update…
This commit is contained in:
parent
372c577f83
commit
09687c4926
2520 changed files with 34227 additions and 7318 deletions
13
Task/Middle-three-digits/AutoHotkey/middle-three-digits.ahk
Normal file
13
Task/Middle-three-digits/AutoHotkey/middle-three-digits.ahk
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Numbers:="123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345,1,2,-1,-10,2002,-2002,0"
|
||||
Loop, parse, Numbers, `,
|
||||
{
|
||||
if A_LoopField is not number
|
||||
log := log . A_LoopField . "`t: Not a valid number`n"
|
||||
else if((d:=StrLen(n:=RegExReplace(A_LoopField,"\D")))<3)
|
||||
log := log . A_LoopField . "`t: Too short`n"
|
||||
else if(!Mod(d,2))
|
||||
log := log . A_LoopField . "`t: Not an odd number of digits`n"
|
||||
else
|
||||
log := log . A_LoopField . "`t: " . SubStr(n,((d-3)//2)+1,3) . "`n"
|
||||
}
|
||||
MsgBox % log
|
||||
22
Task/Middle-three-digits/BASIC/middle-three-digits-1.basic
Normal file
22
Task/Middle-three-digits/BASIC/middle-three-digits-1.basic
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
100 DEF FN L(N) = LEN(STR$(INT(ABS(N))))
|
||||
110 DEF FN N(N) = VAL(MID$(STR$(INT(ABS(N))),(FN L(N)-1)/2,3))
|
||||
120 DEF FN EVEN(N) = INT(N/2) = N/2
|
||||
130 FOR I = 1 TO 20
|
||||
140 READ N
|
||||
150 PRINT N":",
|
||||
160 GOSUB 100"MIDDLE THREE DIGITS
|
||||
170 PRINT R$
|
||||
180 NEXT
|
||||
190 END
|
||||
200 R$ = ""
|
||||
210 IF FN EVEN(FN L(N)) THEN R$ = "?EVEN,"
|
||||
220 IF FN L(N) < 3 THEN R$ = R$ + "ONLY " + STR$(FN L(N)) + " DIGIT" + MID$("S",FN L(N) - 1, 1)
|
||||
230 IF RIGHT$(R$, 1) = "," THEN R$ = LEFT$(R$, LEN(R$) - 1) : RETURN
|
||||
240 IF LEFT$(R$, 1) = "?" THEN RETURN
|
||||
250 IF R$ <> "" THEN R$ = "?" + R$ : RETURN
|
||||
260 R$ = STR$(FN N(N))
|
||||
270 IF LEN(R$) = 1 THEN R$ = "00" + R$
|
||||
280 IF LEN(R$) = 2 THEN R$ = "0" + R$
|
||||
290 RETURN
|
||||
300 DATA123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345
|
||||
310 DATA1,2,-1,-10,2002,-2002,0
|
||||
45
Task/Middle-three-digits/BASIC/middle-three-digits-2.basic
Normal file
45
Task/Middle-three-digits/BASIC/middle-three-digits-2.basic
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#APPTYPE CONSOLE
|
||||
|
||||
DIM numbers AS STRING = "123,12345,1234567,987654321,10001,-10001,-123,-100,100,-12345,1,2,-1,-10,2002,-2002,0"
|
||||
DIM dict[] = Split(numbers, ",")
|
||||
DIM num AS INTEGER
|
||||
DIM num2 AS INTEGER
|
||||
DIM powered AS INTEGER
|
||||
|
||||
FOR DIM i = 0 TO COUNT(dict) - 1
|
||||
num2 = dict[i]
|
||||
num = ABS(num2)
|
||||
IF num < 100 THEN
|
||||
display(num2, "is too small")
|
||||
ELSE
|
||||
FOR DIM j = 9 DOWNTO 1
|
||||
powered = 10 ^ j
|
||||
IF num >= powered THEN
|
||||
IF j MOD 2 = 1 THEN
|
||||
display(num2, "has even number of digits")
|
||||
ELSE
|
||||
display(num2, middle3(num, j))
|
||||
END IF
|
||||
EXIT FOR
|
||||
END IF
|
||||
NEXT
|
||||
END IF
|
||||
NEXT
|
||||
|
||||
PAUSE
|
||||
|
||||
FUNCTION display(num, msg)
|
||||
PRINT LPAD(num, 11, " "), " --> ", msg
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION middle3(n, pwr)
|
||||
DIM power AS INTEGER = (pwr \ 2) - 1
|
||||
DIM m AS INTEGER = n
|
||||
m = m \ (10 ^ power)
|
||||
m = m MOD 1000
|
||||
IF m = 0 THEN
|
||||
RETURN "000"
|
||||
ELSE
|
||||
RETURN m
|
||||
END IF
|
||||
END FUNCTION
|
||||
28
Task/Middle-three-digits/BASIC/middle-three-digits-3.basic
Normal file
28
Task/Middle-three-digits/BASIC/middle-three-digits-3.basic
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
Procedure.s middleThreeDigits(x.q)
|
||||
Protected x$, digitCount
|
||||
|
||||
If x < 0: x = -x: EndIf
|
||||
|
||||
x$ = Str(x)
|
||||
digitCount = Len(x$)
|
||||
If digitCount < 3
|
||||
ProcedureReturn "invalid input: too few digits"
|
||||
ElseIf digitCount % 2 = 0
|
||||
ProcedureReturn "invalid input: even number of digits"
|
||||
EndIf
|
||||
|
||||
ProcedureReturn Mid(x$,digitCount / 2, 3)
|
||||
EndProcedure
|
||||
|
||||
If OpenConsole()
|
||||
Define testValues$ = "123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345 1 2 -1 -10 2002 -2002 0"
|
||||
|
||||
Define i, value.q, numTests = CountString(testValues$, " ") + 1
|
||||
For i = 1 To numTests
|
||||
value = Val(StringField(testValues$, i, " "))
|
||||
PrintN(RSet(Str(value), 12, " ") + " : " + middleThreeDigits(value))
|
||||
Next
|
||||
|
||||
Print(#crlf$ + #crlf$ + "Press ENTER to exit"): Input()
|
||||
CloseConsole()
|
||||
EndIf
|
||||
13
Task/Middle-three-digits/BASIC/middle-three-digits-4.basic
Normal file
13
Task/Middle-three-digits/BASIC/middle-three-digits-4.basic
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
x$ = "123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0"
|
||||
|
||||
while word$(x$,i+1,",") <> ""
|
||||
i = i + 1
|
||||
a1$ = trim$(word$(x$,i,","))
|
||||
if left$(a1$,1) = "-" then a$ = mid$(a1$,2) else a$ = a1$
|
||||
if (len(a$) and 1) = 0 or len(a$) < 3 then
|
||||
print a1$;chr$(9);" length < 3 or is even"
|
||||
else
|
||||
print mid$(a$,((len(a$)-3)/2)+1,3);" ";a1$
|
||||
end if
|
||||
wend
|
||||
end
|
||||
|
|
@ -2,46 +2,55 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
char input[50];
|
||||
int midPoint;
|
||||
|
||||
void midThree(char arg[])
|
||||
{
|
||||
char output[4];
|
||||
int midPoint;
|
||||
arg[0]=='-'?midPoint = ((strlen(arg) + 1) / 2):midPoint = ((strlen(arg) + 1) / 2) - 1;
|
||||
|
||||
if(strlen(arg) < 3)
|
||||
{
|
||||
printf("Error, %d is too short.\n",atoi(arg));
|
||||
return ;
|
||||
}
|
||||
else if(strlen(arg) == 4 || strlen(arg) == 3)
|
||||
{
|
||||
printf("Error, %d has %d digits, no 3 middle digits.\n",atoi(arg),arg[0]=='-'?strlen(arg)-1:strlen(arg));
|
||||
return ;
|
||||
}
|
||||
else{
|
||||
for(int i=0; i<3; i++)
|
||||
{
|
||||
output[i] = input[(midPoint-1) + i];
|
||||
output[i] = arg[(midPoint-1) + i];
|
||||
}
|
||||
output[3] = '\0';
|
||||
printf("The middle three digits of %s are %s.\n",arg,output);
|
||||
}
|
||||
}}
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
char input[50];
|
||||
int x[] = {123, 12345, 1234567, 987654321, 10001, -10001,
|
||||
-123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0,
|
||||
1234567890},i;
|
||||
|
||||
if(argc < 2)
|
||||
{
|
||||
printf("Usage: %s <integer>\n",argv[0]);
|
||||
printf("Examples with preloaded data shown below :\n");
|
||||
|
||||
for(i=0;i<18;i++)
|
||||
{
|
||||
midThree(itoa(x[i],argv[0],10));
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(input,"%d",abs(atoi(argv[1])));
|
||||
if(strlen(input) < 3)
|
||||
{
|
||||
printf("Error, %d is too short.\n",atoi(argv[1]));
|
||||
return 1;
|
||||
}
|
||||
else if(strlen(input) % 2 == 0)
|
||||
{
|
||||
printf("Error, %d is even.\n",atoi(argv[1]));
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
midPoint = ((strlen(input) + 1) / 2) - 1;
|
||||
sprintf(input,"%d",atoi(argv[1]));
|
||||
midThree(argv[1]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import std.stdio, std.traits, std.conv;
|
||||
import std.stdio, std.traits, std.conv, std.range;
|
||||
|
||||
string middleThreeDigits(T)(in T n) if (isIntegral!T) {
|
||||
auto s = n < 0 ? n.text()[1 .. $] : n.text();
|
||||
auto s = n < 0 ? n.text().dropOne : n.text();
|
||||
auto len = s.length;
|
||||
if (len < 3 || len % 2 == 0)
|
||||
return "Need odd and >= 3 digits";
|
||||
|
|
@ -15,7 +15,7 @@ void main() {
|
|||
foreach (n; passing)
|
||||
writefln("middleThreeDigits(%s): %s", n, middleThreeDigits(n));
|
||||
|
||||
immutable failing = [1, 2, -1, -10, 2002, -2002, 0,int.min,int.max];
|
||||
immutable failing = [1, 2, -1, -10, 2002, -2002, 0, int.min, int.max];
|
||||
foreach (n; failing)
|
||||
writefln("middleThreeDigits(%s): %s", n, middleThreeDigits(n));
|
||||
}
|
||||
|
|
|
|||
4
Task/Middle-three-digits/Forth/middle-three-digits.fth
Normal file
4
Task/Middle-three-digits/Forth/middle-three-digits.fth
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
: middle3 ( n1 -- a n2)
|
||||
abs s>d <# #s #> dup 2/ 0<> over 1 and 0<> and
|
||||
if 2/ 1- chars + 3 else drop 0 then
|
||||
;
|
||||
|
|
@ -1,13 +1,26 @@
|
|||
function middle(i)
|
||||
let s = string(abs(i)) , l = length(s) , mid = int((l+1)/2)
|
||||
s = string(abs(i))
|
||||
l = length(s)
|
||||
mid = int((l+1)/2)
|
||||
l < 3 ?
|
||||
"error: not enough digits" :
|
||||
iseven(l) ?
|
||||
"error: number of digits is even" :
|
||||
s[mid-1:mid+1]
|
||||
end
|
||||
join((s[mid-1],s[mid],s[mid+1]))
|
||||
end
|
||||
|
||||
function dummy(x,y,z=5)
|
||||
"""
|
||||
A dummy docstring over two lines
|
||||
for text coloration.
|
||||
"""
|
||||
print("this is just some text to show text", 1.0, 3)
|
||||
# and comment coloration
|
||||
// and comment coloration 2
|
||||
end
|
||||
|
||||
julia>
|
||||
|
||||
for n = [123, 12345, 1234567, 987654321, 10001, -10001, -123,
|
||||
-100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0]
|
||||
println (@sprintf("%10d : ", n), middle(n))
|
||||
|
|
|
|||
39
Task/Middle-three-digits/PHP/middle-three-digits.php
Normal file
39
Task/Middle-three-digits/PHP/middle-three-digits.php
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// 32-bit builds of PHP: Integers can be from -2147483648 to 2147483647
|
||||
// 64-bit builds of PHP: Integers can be from -9223372036854775808 to 9223372036854775807
|
||||
|
||||
function middlethree($integer)
|
||||
{
|
||||
$int = (int)str_replace('-','',$integer);
|
||||
$length = strlen($int);
|
||||
|
||||
if(is_int($int))
|
||||
{
|
||||
if($length >= 3)
|
||||
{
|
||||
if($length % 2 == 1)
|
||||
{
|
||||
$middle = floor($length / 2) - 1;
|
||||
return substr($int,$middle, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'The value must contain an odd amount of digits...';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'The value must contain at least three digits...';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'The value does not appear to be an integer...';
|
||||
}
|
||||
}
|
||||
|
||||
$numbers = array(123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0);
|
||||
|
||||
foreach($numbers as $nums)
|
||||
{
|
||||
echo $nums.' : '.middlethree($nums). '<br>';
|
||||
}
|
||||
24
Task/Middle-three-digits/PL-I/middle-three-digits.pli
Normal file
24
Task/Middle-three-digits/PL-I/middle-three-digits.pli
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
middle: procedure options (main); /* 29 October 2013 */
|
||||
declare n fixed (15);
|
||||
declare s character (25) varying;
|
||||
declare in file input;
|
||||
|
||||
open file (in) title ('/MIDDLE.DAT,type(text),recsize(100)');
|
||||
on endfile (in) stop;
|
||||
|
||||
do forever;
|
||||
get file (in) list (n); put skip list (n);
|
||||
n = abs(n);
|
||||
s = trim(n);
|
||||
if length(s) < 3 then put list ('not possible');
|
||||
else if mod(length(s), 2) = 0 then put list ('not possible');
|
||||
else
|
||||
do;
|
||||
do while (length(s) > 3);
|
||||
s = substr(s, 2, length(s)-2);
|
||||
end;
|
||||
put list ('The middle three digits are: ' || s);
|
||||
end;
|
||||
end;
|
||||
|
||||
end middle;
|
||||
10
Task/Middle-three-digits/PicoLisp/middle-three-digits-1.l
Normal file
10
Task/Middle-three-digits/PicoLisp/middle-three-digits-1.l
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
(de middle3digits (N)
|
||||
(let (Lst (chop (abs N)) Len (length Lst))
|
||||
(tab (10 -2 -30)
|
||||
N
|
||||
":"
|
||||
(cond
|
||||
((> 3 Len) "not enough digits")
|
||||
((bit? 1 Len)
|
||||
(head 3 (nth Lst (/ Len 2))) )
|
||||
(T "even number of digits") ) ) ) )
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
(mapc middle3digits
|
||||
(123 12345 1234567 987654321 10001 -10001 -123 -100 100 -12345
|
||||
1 2 -1 -10 2002 -2002 0 ) )
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
def middle_three_digits(n)
|
||||
# minus sign doesn't factor into digit count,
|
||||
# and calling #abs acts as a duck-type assertion
|
||||
n = n.abs
|
||||
# minus sign doesn't factor into digit count,
|
||||
# and calling #abs acts as a duck-type assertion
|
||||
n = n.abs
|
||||
|
||||
# convert to string and find length
|
||||
l = (s = n.to_s).length
|
||||
# convert to string and find length
|
||||
l = (s = n.to_s).length
|
||||
|
||||
# check validity
|
||||
raise ArgumentError, "Number must have at least three digits" if l < 3
|
||||
raise ArgumentError, "Number must have an odd number of digits" if l % 2 == 0
|
||||
# check validity
|
||||
raise ArgumentError, "Number must have at least three digits" if l < 3
|
||||
raise ArgumentError, "Number must have an odd number of digits" if l.even?
|
||||
|
||||
return s[l/2-1,3].to_i
|
||||
return s[l/2-1,3].to_i
|
||||
end
|
||||
|
||||
samples = [
|
||||
|
|
@ -21,10 +21,10 @@ samples = [
|
|||
width = samples.map { |n| n.to_s.length }.max
|
||||
|
||||
samples.each do |n|
|
||||
print "%#{width}d: " % n
|
||||
begin
|
||||
puts "%03d" % middle_three_digits(n)
|
||||
rescue ArgumentError => e
|
||||
puts e.to_s
|
||||
end
|
||||
print "%#{width}d: " % n
|
||||
begin
|
||||
puts "%03d" % middle_three_digits(n)
|
||||
rescue ArgumentError => e
|
||||
puts e
|
||||
end
|
||||
end
|
||||
|
|
|
|||
24
Task/Middle-three-digits/Seed7/middle-three-digits.seed7
Normal file
24
Task/Middle-three-digits/Seed7/middle-three-digits.seed7
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
$include "seed7_05.s7i";
|
||||
|
||||
const func string: middle3 (in integer: number) is func
|
||||
result
|
||||
var string: middle3 is "";
|
||||
begin
|
||||
middle3 := str(abs(number));
|
||||
if not odd(length(middle3)) or length(middle3) < 3 then
|
||||
middle3 := "error";
|
||||
else
|
||||
middle3 := middle3[succ((length(middle3) - 3) div 2) len 3];
|
||||
end if;
|
||||
end func;
|
||||
|
||||
const proc: main is func
|
||||
local
|
||||
var integer: number is 0;
|
||||
var string: mid3 is "";
|
||||
begin
|
||||
for number range [] (123, 12345, 1234567, 987654321, 10001, -10001, -123,
|
||||
-100, 100, -12345, 1, 2, -1, -10, 2002, -2002, 0) do
|
||||
writeln(number <& ": " <& middle3(number));
|
||||
end for;
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue