2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,6 +1,11 @@
|
|||
{{omit from|GUISS}}
|
||||
{{omit from|TUSCRIPT}}
|
||||
The task is to write the language's name in 3D ASCII.
|
||||
|
||||
;Task:
|
||||
Write/display a language's name in '''3D''' ASCII.
|
||||
|
||||
|
||||
(We can leave the definition of "3D ASCII" fuzzy,
|
||||
so long as the result is interesting or amusing,
|
||||
not a cheap hack to satisfy the task.)
|
||||
<br><br>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
THREED CSECT
|
||||
STM 14,12,12(13)
|
||||
BALR 12,0
|
||||
USING *,12
|
||||
XPRNT =CL23'0 ####. #. ###.',23
|
||||
XPRNT =CL24'1 #. #. #. #.',24
|
||||
XPRNT =CL24'1 ##. # ##. #. #.',24
|
||||
XPRNT =CL24'1 #. #. #. #. #.',24
|
||||
XPRNT =CL23'1 ####. ###. ###.',23
|
||||
LM 14,12,12(13)
|
||||
BR 14
|
||||
LTORG
|
||||
END
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
5 PAPER 0: CLS
|
||||
10 LET d=0: INK 1: GO SUB 40
|
||||
20 LET d=1: INK 6: GO SUB 40
|
||||
30 STOP
|
||||
40 RESTORE
|
||||
50 FOR n=1 TO 5
|
||||
60 READ a$
|
||||
70 FOR j=1 TO LEN a$
|
||||
80 PRINT AT n+7,j+5+d;
|
||||
90 IF a$(j)="X" THEN PRINT CHR$ 143: REM Equivalent to 219 in ASCII extended for IBM PC
|
||||
100 NEXT j
|
||||
110 NEXT n
|
||||
120 RETURN
|
||||
130 DATA "XXX XXXX XXX X XXX"
|
||||
140 DATA "X X X X X X X "
|
||||
150 DATA "XXX XXXX XXX X X "
|
||||
160 DATA "X X X X X X X "
|
||||
170 DATA "XXX X X XXX X XXX"
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
\ Rossetta Code Write language name in 3D ASCII
|
||||
\ Simple Method
|
||||
|
||||
: l1 ." /\\\\\\\\\\\\\ /\\\\ /\\\\\\\ /\\\\\\\\\\\\\ /\\\ /\\\" CR ;
|
||||
: l2 ." \/\\\///////// /\\\//\\\ /\\\/////\\\ \//////\\\//// \/\\\ \/\\\" CR ;
|
||||
: l3 ." \/\\\ /\\\/ \///\\\ \/\\\ \/\\\ \/\\\ \/\\\ \/\\\" CR ;
|
||||
: l4 ." \/\\\\\\\\\ /\\\ \//\\\ \/\\\\\\\\\/ \/\\\ \/\\\\\\\\\\\\\" CR ;
|
||||
: l5 ." \/\\\///// \/\\\ \/\\\ \/\\\////\\\ \/\\\ \/\\\///////\\\" CR ;
|
||||
: l6 ." \/\\\ \//\\\ /\\\ \/\\\ \//\\\ \/\\\ \/\\\ \/\\\" CR ;
|
||||
: l7 ." \/\\\ \///\\\ /\\\ \/\\\ \//\\\ \/\\\ \/\\\ \/\\\" CR ;
|
||||
: l8 ." \/\\\ \///\\\\/ \/\\\ \//\\\ \/\\\ \/\\\ \/\\\" CR ;
|
||||
: l9 ." \/// \//// \/// \/// \/// \/// \///" CR ;
|
||||
|
||||
: "FORTH" cr L1 L2 L3 L4 L5 L6 L7 L8 l9 ;
|
||||
|
||||
( test at the console )
|
||||
page "forth"
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
\ Original code: "Short phrases with BIG Characters by Wil Baden 2003-02-23
|
||||
\ Modified BFox for simple 3D presentation 2015-07-14
|
||||
|
||||
\ Forth is a very low level language but by using primitive operations
|
||||
\ we create new words in the language to solve the problem.
|
||||
|
||||
\ This solution coverts an acsii string to big text characters
|
||||
|
||||
HEX
|
||||
: toUpper ( char -- char ) 05F and ;
|
||||
|
||||
|
||||
: w, ( n -- ) CSWAP , ; \ compile 'n', a 16 bit integer, into memory in the correct order
|
||||
|
||||
|
||||
CREATE Banner-Matrix
|
||||
0000 w, 0000 w, 0000 w, 0000 w, 2020 w, 2020 w, 2000 w, 2000 w,
|
||||
5050 w, 5000 w, 0000 w, 0000 w, 5050 w, F850 w, F850 w, 5000 w,
|
||||
2078 w, A070 w, 28F0 w, 2000 w, C0C8 w, 1020 w, 4098 w, 1800 w,
|
||||
40A0 w, A040 w, A890 w, 6800 w, 3030 w, 1020 w, 0000 w, 0000 w,
|
||||
2040 w, 8080 w, 8040 w, 2000 w, 2010 w, 0808 w, 0810 w, 2000 w,
|
||||
20A8 w, 7020 w, 70A8 w, 2000 w, 0020 w, 2070 w, 2020 w, 0000 w,
|
||||
0000 w, 0030 w, 3010 w, 2000 w, 0000 w, 0070 w, 0000 w, 0000 w,
|
||||
0000 w, 0000 w, 0030 w, 3000 w, 0008 w, 1020 w, 4080 w, 0000 w,
|
||||
|
||||
7088 w, 98A8 w, C888 w, 7000 w, 2060 w, 2020 w, 2020 w, 7000 w,
|
||||
7088 w, 0830 w, 4080 w, F800 w, F810 w, 2030 w, 0888 w, 7000 w,
|
||||
1030 w, 5090 w, F810 w, 1000 w, F880 w, F008 w, 0888 w, 7000 w,
|
||||
3840 w, 80F0 w, 8888 w, 7000 w, F808 w, 1020 w, 4040 w, 4000 ,
|
||||
7088 w, 8870 w, 8888 w, 7000 w, 7088 w, 8878 w, 0810 w, E000 w,
|
||||
0060 w, 6000 w, 6060 w, 0000 w, 0060 w, 6000 w, 6060 w, 4000 w,
|
||||
1020 w, 4080 w, 4020 w, 1000 w, 0000 w, F800 w, F800 w, 0000 w,
|
||||
4020 w, 1008 w, 1020 w, 4000 w, 7088 w, 1020 w, 2000 w, 2000 w,
|
||||
|
||||
7088 w, A8B8 w, B080 w, 7800 w, 2050 w, 8888 w, F888 w, 8800 w,
|
||||
F088 w, 88F0 w, 8888 w, F000 w, 7088 w, 8080 w, 8088 w, 7000 w,
|
||||
F048 w, 4848 w, 4848 w, F000 w, F880 w, 80F0 w, 8080 w, F800 w,
|
||||
F880 w, 80F0 w, 8080 w, 8000 w, 7880 w, 8080 w, 9888 w, 7800 w,
|
||||
8888 w, 88F8 w, 8888 w, 8800 w, 7020 w, 2020 w, 2020 w, 7000 w,
|
||||
0808 w, 0808 w, 0888 w, 7800 w, 8890 w, A0C0 w, A090 w, 8800 w,
|
||||
8080 w, 8080 w, 8080 w, F800 w, 88D8 w, A8A8 w, 8888 w, 8800 w,
|
||||
8888 w, C8A8 w, 9888 w, 8800 w, 7088 w, 8888 w, 8888 w, 7000 w,
|
||||
|
||||
F088 w, 88F0 w, 8080 w, 8000 w, 7088 w, 8888 w, A890 w, 6800 w,
|
||||
F088 w, 88F0 w, A090 w, 8800 w, 7088 w, 8070 w, 0888 w, 7000 w,
|
||||
F820 w, 2020 w, 2020 w, 2000 w, 8888 w, 8888 w, 8888 w, 7000 w,
|
||||
8888 w, 8888 w, 8850 w, 2000 w, 8888 w, 88A8 w, A8D8 w, 8800 w,
|
||||
8888 w, 5020 w, 5088 w, 8800 w, 8888 w, 5020 w, 2020 w, 2000 w,
|
||||
F808 w, 1020 w, 4080 w, F800 w, 7840 w, 4040 w, 4040 w, 7800 w,
|
||||
0080 w, 4020 w, 1008 w, 0000 w, F010 w, 1010 w, 1010 w, F000 w,
|
||||
0000 w, 2050 w, 8800 w, 0000 w, 0000 w, 0000 w, 0000 w, 00F8 w,
|
||||
|
||||
|
||||
: >col ( char -- ndx ) \ convert ascii char into column index in the matrix
|
||||
toupper BL - 0 MAX ; \ Space char (BL) = 0. Index is clipped to 0 as minimum value
|
||||
|
||||
|
||||
: ]banner-matrix ( row ascii -- addr ) \ convert Banner-matrix memory to a 2 dimensional matrix
|
||||
>col 8 * Banner-matrix + + ;
|
||||
|
||||
|
||||
: PLACE ( str len addr -- ) \ store a string with length at addr
|
||||
2DUP 2>R 1+ SWAP MOVE 2R> C! ;
|
||||
|
||||
synonym len c@ \ fetch the 1st char of a counted string to return the length
|
||||
|
||||
: BIT? ( byte bit# -- -1 | 0) \ given a byte and bit# on stack, return true or false flag
|
||||
1 swap lshift AND ;
|
||||
|
||||
DECIMAL
|
||||
|
||||
variable bannerstr 5 allot \ memory for the character string
|
||||
|
||||
\ Font selection characters stored as counted strings
|
||||
: STARFONT S" *" bannerstr PLACE ;
|
||||
: HASHFONT S" ##" bannerstr PLACE ;
|
||||
: 3DFONT S" _/" bannerstr PLACE ;
|
||||
|
||||
|
||||
: .BIGCHAR ( matrix-byte -- )
|
||||
2 7 \ we use bits 7 to 2
|
||||
DO
|
||||
dup I bit? \ check bit I in the matrix-byte on stack
|
||||
IF bannerstr count TYPE \ if BIT=TRUE
|
||||
ELSE bannerstr len SPACES \ if BIT=false
|
||||
THEN
|
||||
-1 +LOOP \ loop backwards
|
||||
DROP ; \ drop the matrix-byte
|
||||
|
||||
: BANNER ( str len -- )
|
||||
8 0
|
||||
DO CR \ str len
|
||||
2dup
|
||||
BOUNDS \ calc. begin & end addresses of string
|
||||
DO
|
||||
J I C@ ]Banner-Matrix C@ .BIGCHAR
|
||||
LOOP \ str len
|
||||
LOOP
|
||||
2DROP ; \ drop str & len
|
||||
|
||||
\ test the solution in the Forth console
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
l = 20
|
||||
h = 11
|
||||
|
||||
table = [
|
||||
""" .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .-----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. .----------------. """,
|
||||
"""| .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. || .--------------. |""",
|
||||
"""| | __ | || | ______ | || | ______ | || | ________ | || | _________ | || | _________ | || | ______ | || | ____ ____ | || | _____ | || | _____ | || | ___ ____ | || | _____ | || | ____ ____ | || | ____ _____ | || | ____ | || | ______ | || | ___ | || | _______ | || | _______ | || | _________ | || | _____ _____ | || | ____ ____ | || | _____ _____ | || | ____ ____ | || | ____ ____ | || | ________ | || | ______ | || | | |""",
|
||||
"""| | / \ | || | |_ _ \ | || | .' ___ | | || | |_ ___ `. | || | |_ ___ | | || | |_ ___ | | || | .' ___ | | || | |_ || _| | || | |_ _| | || | |_ _| | || | |_ ||_ _| | || | |_ _| | || ||_ \ / _|| || ||_ \|_ _| | || | .' `. | || | |_ __ \ | || | .' '. | || | |_ __ \ | || | / ___ | | || | | _ _ | | || ||_ _||_ _|| || ||_ _| |_ _| | || ||_ _||_ _|| || | |_ _||_ _| | || | |_ _||_ _| | || | | __ _| | || | / _ __ `. | || | | |""",
|
||||
"""| | / /\ \ | || | | |_) | | || | / .' \_| | || | | | `. \ | || | | |_ \_| | || | | |_ \_| | || | / .' \_| | || | | |__| | | || | | | | || | | | | || | | |_/ / | || | | | | || | | \/ | | || | | \ | | | || | / .--. \ | || | | |__) | | || | / .-. \ | || | | |__) | | || | | (__ \_| | || | |_/ | | \_| | || | | | | | | || | \ \ / / | || | | | /\ | | | || | \ \ / / | || | \ \ / / | || | |_/ / / | || | |_/____) | | || | | |""",
|
||||
"""| | / ____ \ | || | | __'. | || | | | | || | | | | | | || | | _| _ | || | | _| | || | | | ____ | || | | __ | | || | | | | || | _ | | | || | | __'. | || | | | _ | || | | |\ /| | | || | | |\ \| | | || | | | | | | || | | ___/ | || | | | | | | || | | __ / | || | '.___`-. | || | | | | || | | ' ' | | || | \ \ / / | || | | |/ \| | | || | > `' < | || | \ \/ / | || | .'.' _ | || | / ___.' | || | | |""",
|
||||
"""| | _/ / \ \_ | || | _| |__) | | || | \ `.___.'\ | || | _| |___.' / | || | _| |___/ | | || | _| |_ | || | \ `.___] _| | || | _| | | |_ | || | _| |_ | || | | |_' | | || | _| | \ \_ | || | _| |__/ | | || | _| |_\/_| |_ | || | _| |_\ |_ | || | \ `--' / | || | _| |_ | || | \ `-' \_ | || | _| | \ \_ | || | |`\____) | | || | _| |_ | || | \ `--' / | || | \ ' / | || | | /\ | | || | _/ /'`\ \_ | || | _| |_ | || | _/ /__/ | | || | |_| | || | | |""",
|
||||
"""| ||____| |____|| || | |_______/ | || | `._____.' | || | |________.' | || | |_________| | || | |_____| | || | `._____.' | || | |____||____| | || | |_____| | || | `.___.' | || | |____||____| | || | |________| | || ||_____||_____|| || ||_____|\____| | || | `.____.' | || | |_____| | || | `.___.\__| | || | |____| |___| | || | |_______.' | || | |_____| | || | `.__.' | || | \_/ | || | |__/ \__| | || | |____||____| | || | |______| | || | |________| | || | (_) | || | | |""",
|
||||
"""| | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | || | | |""",
|
||||
"""| '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' || '--------------' |""",
|
||||
""" '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' '----------------' """
|
||||
]
|
||||
|
||||
if __name__ == '__main__':
|
||||
t = raw_input("Enter the text to convert :\n")
|
||||
if not t :
|
||||
t = "PYTHON"
|
||||
|
||||
for i in range(h):
|
||||
txt = ""
|
||||
for char in t:
|
||||
# get dec value of T
|
||||
if char.isalpha():
|
||||
val = ord(char.upper()) - 65
|
||||
elif char == " ":
|
||||
val= 27
|
||||
else:
|
||||
val = 26
|
||||
begin = val*l
|
||||
end = val*l + l
|
||||
txt += table[i][begin:end]
|
||||
print txt
|
||||
|
|
@ -1,17 +1,17 @@
|
|||
/*REXX pgm draws a "3D" image of text representation (any char except / & \).*/
|
||||
#=7; @.1 = '@@@@ '
|
||||
@.2 = '@ @ '
|
||||
@.3 = '@ @ @@@@ @ @ @ @ '
|
||||
@.4 = '@@@@ @ @ @ @ @ '
|
||||
@.5 = '@ @ @@@ @ @ '
|
||||
@.6 = '@ @ @ @ @ @ @ '
|
||||
@.7 = '@ @ @@@@ @ @ @ @ '
|
||||
do j=1 for #; x=left(strip(@.j),1) /* [↓] display the (above) text lines.*/
|
||||
$.1 = changestr( " " , @.j, ' ' ) ; $.2 = $.1
|
||||
/*REXX pgm draws a "3D" image of text representation; any character except / and \ */
|
||||
#=7; @.1 = '@@@@ '
|
||||
@.2 = '@ @ '
|
||||
@.3 = '@ @ @@@@ @ @ @ @ '
|
||||
@.4 = '@@@@ @ @ @ @ @ '
|
||||
@.5 = '@ @ @@@ @ @ '
|
||||
@.6 = '@ @ @ @ @ @ @ '
|
||||
@.7 = '@ @ @@@@ @ @ @ @ '
|
||||
do j=1 for #; x=left(strip(@.j),1) /* [↓] display the (above) text lines.*/
|
||||
$.1 = changestr( " " , @.j, ' ' ) ; $.2 = $.1
|
||||
$.1 = changestr( x , $.1, '///' )" "
|
||||
$.2 = changestr( x , $.2, '\\\' )" "
|
||||
$.1 = changestr( "/ ", $.1, '/\' )
|
||||
$.2 = changestr( "\ ", $.2, '\/' )
|
||||
do k=1 for 2; say strip(left('',#-j)$.k,'T') /*LEFT does indentation*/
|
||||
end /*k*/ /* [↓] display a line and its shadow.*/
|
||||
end /*j*/ /*stick a fork in it, we're all done. */
|
||||
do k=1 for 2; say strip(left('',#-j)$.k,"T") /*the LEFT BIF does indentation.*/
|
||||
end /*k*/ /* [↓] display a line and its shadow.*/
|
||||
end /*j*/ /*stick a fork in it, we're all done. */
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
select ' SSS\ ' as s, ' QQQ\ ' as q, 'L\ ' as l from dual
|
||||
union all select 'S \|', 'Q Q\ ', 'L | ' from dual
|
||||
union all select '\SSS ', 'Q Q |', 'L | ' from dual
|
||||
union all select ' \ S\', 'Q Q Q |', 'L | ' from dual
|
||||
union all select ' SSS |', '\QQQ\\|', 'LLLL\' from dual
|
||||
union all select ' \__\/', ' \_Q_/ ', '\___\' from dual
|
||||
union all select ' ', ' \\ ', ' ' from dual;
|
||||
Loading…
Add table
Add a link
Reference in a new issue