Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
58
Task/Draw-a-cuboid/ALGOL-68/draw-a-cuboid.alg
Normal file
58
Task/Draw-a-cuboid/ALGOL-68/draw-a-cuboid.alg
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
BEGIN # draw some cuboids using ASCII art #
|
||||
|
||||
# draws a cuboid standing on one edge using ASCII art #
|
||||
PROC aa cuboid = ( INT h, w, l )VOID:
|
||||
BEGIN
|
||||
# top line #
|
||||
FOR i TO l DO print( ( " " ) ) OD;
|
||||
FOR i TO w + 1 DO print( ( "_" ) ) OD;
|
||||
print( ( newline ) );
|
||||
# rest of the top face and part of the visible side #
|
||||
INT face width := 0;
|
||||
INT edge pos := 0;
|
||||
FOR i TO l DO
|
||||
FOR j TO l - i DO print( ( " " ) ) OD;
|
||||
print( ( "/" ) );
|
||||
FOR j TO w DO print( ( IF i = l THEN "_" ELSE " " FI ) ) OD;
|
||||
print( ( "/" ) );
|
||||
edge pos +:= 1;
|
||||
IF edge pos <= h THEN
|
||||
# drsw the back edge #
|
||||
face width := 2 * ( edge pos - 1 );
|
||||
FOR j TO face width DO print( ( " " ) ) OD;
|
||||
print( ( "\" ) )
|
||||
ELSE
|
||||
# draw the bottom edge #
|
||||
FOR j TO face width + 1 DO print( ( " " ) ) OD;
|
||||
print( ( "/" ) )
|
||||
FI;
|
||||
print( ( newline ) )
|
||||
OD;
|
||||
# other vidible face #
|
||||
FOR i TO h DO
|
||||
FOR j TO i - 1 DO print( ( " " ) ) OD;
|
||||
print( ( "\" ) );
|
||||
FOR j TO w DO print( ( IF i = h THEN "_" ELSE " " FI ) ) OD;
|
||||
print( ( "\" ) );
|
||||
edge pos +:= 1;
|
||||
IF edge pos <= h THEN
|
||||
# drsw the back edge #
|
||||
FOR j TO face width + 1 DO print( ( " " ) ) OD;
|
||||
print( ( "\" ) )
|
||||
ELSE
|
||||
# draw the bottom edge #
|
||||
FOR j TO face width DO print( ( " " ) ) OD;
|
||||
face width -:= 2;
|
||||
print( ( "/" ) )
|
||||
FI;
|
||||
print( ( newline ) )
|
||||
OD
|
||||
|
||||
END # aa cuboid # ;
|
||||
|
||||
aa cuboid( 3, 2, 4 );
|
||||
aa cuboid( 4, 3, 2 );
|
||||
aa cuboid( 2, 4, 3 );
|
||||
aa cuboid( 2, 3, 4 )
|
||||
|
||||
END
|
||||
27
Task/Draw-a-cuboid/Jq/draw-a-cuboid.jq
Normal file
27
Task/Draw-a-cuboid/Jq/draw-a-cuboid.jq
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
def cubLine($n; $dx; $dy; $cde):
|
||||
def s: if . == 0 then "" else . * " " end; # for jaq
|
||||
reduce range(1; 9*$dx) as $d ("\($n|s)\($cde[0:1])";
|
||||
. + $cde[1:2] )
|
||||
+ $cde[0:1]
|
||||
+ ("\($dy|s)\($cde[2:])");
|
||||
|
||||
def cuboid($dx; $dy; $dz):
|
||||
"cuboid \($dx) \($dy) \($dz):",
|
||||
# top
|
||||
cubLine($dy+1; $dx; 0; "+-"),
|
||||
# top and side
|
||||
(range(1; 1+$dy) as $i | cubLine($dy-$i+1; $dx; $i-1; "/ |")),
|
||||
cubLine(0; $dx; $dy; "+-|"),
|
||||
# front and side
|
||||
(range(1; 4*$dz -$dy-2) as $i | cubLine(0; $dx; $dy; "| |")),
|
||||
cubLine(0; $dx; $dy; "| +"),
|
||||
# front and bottom
|
||||
(range(1; 1+$dy) as $i | cubLine(0; $dx; $dy-$i; "| /")),
|
||||
# bottom
|
||||
cubLine(0; $dx; 0; "+-\n");
|
||||
|
||||
cuboid(2; 3; 4),
|
||||
"",
|
||||
cuboid(1; 1; 1),
|
||||
"",
|
||||
cuboid(6; 2; 1)
|
||||
6
Task/Draw-a-cuboid/Locomotive-Basic/draw-a-cuboid.basic
Normal file
6
Task/Draw-a-cuboid/Locomotive-Basic/draw-a-cuboid.basic
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
10 mode 2: origin 100,0: w=120: height=w*1.5: depth=w*2
|
||||
20 x=80: y=10
|
||||
30 plot x,y
|
||||
40 drawr 0,height: drawr w,0: drawr 0,-height: drawr -w,0: rem front
|
||||
50 plot x,y+height: drawr depth/2,height: drawr w,0: drawr 0,-height: drawr -w,-height
|
||||
60 plot x+w,y+height: drawr depth/2,height
|
||||
81
Task/Draw-a-cuboid/PL-M/draw-a-cuboid.plm
Normal file
81
Task/Draw-a-cuboid/PL-M/draw-a-cuboid.plm
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
100H: /* DRAW SOME CUBOIDS USING ASCII ART */
|
||||
|
||||
/* CP/M BDOS SYSTEM CALL AND I/O ROUTINES */
|
||||
BDOS: PROCEDURE( FN, ARG ); DECLARE FN BYTE, ARG ADDRESS; GOTO 5; END;
|
||||
PR$CHAR: PROCEDURE( C ); DECLARE C BYTE; CALL BDOS( 2, C ); END;
|
||||
PR$NL: PROCEDURE; CALL PR$CHAR( 0DH ); CALL PR$CHAR( 0AH ); END;
|
||||
|
||||
/* TASK */
|
||||
|
||||
/* DRAWS A CUBOID STANDING ON ONE EDGE USING ASCII ART */
|
||||
DRAW$CUBOID: PROCEDURE( H, W, L );
|
||||
DECLARE ( H, W, L ) BYTE;
|
||||
DECLARE ( I, J, FACE$WIDTH, EDGE$POS ) BYTE;
|
||||
|
||||
BACKSLASH: PROCEDURE; CALL PR$CHAR( 92 ); END; /* PRINTS A BACKSLASH */
|
||||
REPEAT$CHAR: PROCEDURE( CH, COUNT ); /* PRINTS CH COUNT TIMES */
|
||||
DECLARE ( CH, COUNT ) BYTE;
|
||||
DECLARE I BYTE;
|
||||
IF COUNT > 0 THEN DO;
|
||||
DO I = 1 TO COUNT; CALL PR$CHAR( CH ); END;
|
||||
END;
|
||||
END REPEAT$CHAR;
|
||||
UNDERSCORES: PROCEDURE( COUNT ); /* PRINTS COUNT UNDERSCORES */
|
||||
DECLARE COUNT BYTE;
|
||||
CALL REPEAT$CHAR( 95, COUNT );
|
||||
END UNDERSCORES;
|
||||
|
||||
/* TOP LINE */
|
||||
CALL REPEAT$CHAR( ' ', L ); CALL UNDERSCORES( W + 1 ); CALL PR$NL;
|
||||
/* REST OF THE TOP FACE AND PART OF THE VISIBLE SIDE */
|
||||
FACE$WIDTH = 0;
|
||||
EDGE$POS = 0;
|
||||
DO I = 1 TO L;
|
||||
CALL REPEAT$CHAR( ' ', L - I );
|
||||
CALL PR$CHAR( '/' );
|
||||
IF I = L THEN CALL UNDERSCORES( W );
|
||||
ELSE CALL REPEAT$CHAR( ' ', W );
|
||||
CALL PR$CHAR( '/' );
|
||||
EDGE$POS = EDGE$POS + 1;
|
||||
IF EDGE$POS <= H THEN DO;
|
||||
/* DRAW THE BACK EDGE */
|
||||
FACE$WIDTH = 2 * ( EDGE$POS - 1 );
|
||||
CALL REPEAT$CHAR( ' ', FACE$WIDTH );
|
||||
CALL BACKSLASH;
|
||||
END;
|
||||
ELSE DO;
|
||||
/* DRAW THE BOTTOM EDGE AND THE MORE OF THE VISIBLE SIDE */
|
||||
CALL REPEAT$CHAR( ' ', FACE$WIDTH + 1 );
|
||||
CALL PR$CHAR( '/' );
|
||||
END;
|
||||
CALL PR$NL;
|
||||
END;
|
||||
/* OTHER VISIBLE FACE */
|
||||
DO I = 1 TO H;
|
||||
CALL REPEAT$CHAR( ' ', I - 1 );
|
||||
CALL BACKSLASH;
|
||||
IF I = H THEN CALL UNDERSCORES( W );
|
||||
ELSE CALL REPEAT$CHAR( ' ', W );
|
||||
CALL BACKSLASH;
|
||||
EDGE$POS = EDGE$POS + 1;
|
||||
IF EDGE$POS <= H THEN DO;
|
||||
/* DRAW THE BACK EDGE */
|
||||
CALL REPEAT$CHAR( ' ', FACE$WIDTH + 1 );
|
||||
CALL BACKSLASH;
|
||||
END;
|
||||
ELSE DO;
|
||||
/* DRAW THE BOTTOM EDGE */
|
||||
CALL REPEAT$CHAR( ' ', FACE$WIDTH );
|
||||
FACE$WIDTH = FACE$WIDTH - 2;
|
||||
CALL PR$CHAR( '/' );
|
||||
END;
|
||||
CALL PR$NL;
|
||||
END;
|
||||
END DRAW$CUBOID;
|
||||
|
||||
CALL DRAW$CUBOID( 3, 2, 4 );
|
||||
CALL DRAW$CUBOID( 4, 3, 2 );
|
||||
CALL DRAW$CUBOID( 2, 4, 3 );
|
||||
CALL DRAW$CUBOID( 2, 3, 4 );
|
||||
|
||||
EOF
|
||||
Loading…
Add table
Add a link
Reference in a new issue