September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -8,4 +8,9 @@ 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.)
|
||||
|
||||
|
||||
;Related tasks:
|
||||
* [[Draw_a_rotating_cube|draw a rotating cube]]
|
||||
* [[Draw_a_cuboid|draw a cuboid]]
|
||||
<br><br>
|
||||
|
|
|
|||
|
|
@ -1,46 +1,35 @@
|
|||
10 LET s$="BASIC": REM our language name
|
||||
20 DIM b(5,5):REM our bigmap characters
|
||||
30 FOR l = 1 TO 5: REM 5 characters
|
||||
40 FOR m = 1 TO 5: REM 5 rows
|
||||
50 READ b(l,m)
|
||||
60 NEXT m
|
||||
70 NEXT l
|
||||
|
||||
100 PAPER 0: REM black background
|
||||
110 INK 2: REM our shadow will be red
|
||||
120 CLS
|
||||
130 LET r=9: REM shadow will start on row 5
|
||||
140 LET c=2: REM shadow will start at column 2
|
||||
150 GO SUB 2000: REM draw shadow
|
||||
160 INK 6: REM our forground will be yellow
|
||||
170 LET r=10: REM foreground will start on row 6
|
||||
180 LET c=3: REM foreground will start on column 3
|
||||
190 GO SUB 2000: REM display the language name
|
||||
|
||||
999 STOP
|
||||
|
||||
10 DIM b(5,5): REM our bigmap characters
|
||||
20 FOR l=1 TO 5: REM 5 characters
|
||||
30 FOR m=1 TO 5: REM 5 rows
|
||||
40 READ b(m,l)
|
||||
50 NEXT m
|
||||
60 NEXT l
|
||||
70 PAPER 0: BORDER 0: REM black background and border
|
||||
80 INK 2: REM our shadow will be red
|
||||
90 CLS
|
||||
100 LET r=8: REM shadow will start on row 8
|
||||
110 LET c=1: REM shadow will start at column 1
|
||||
120 GO SUB 2000: REM draw shadow
|
||||
130 INK 6: REM our foreground will be yellow
|
||||
140 LET r=9: REM foreground will start on row 9
|
||||
150 LET c=2: REM foreground will start on column 2
|
||||
160 GO SUB 2000: REM display the language name
|
||||
999 STOP
|
||||
1000 REM convert to binary bigmap
|
||||
1010 LET t=n: REM temporary variable
|
||||
1020 LET g$="": REM this will contain our 5 character binary bigmap
|
||||
1040 FOR z=5 TO 0 STEP -1
|
||||
1050 LET d$=" ": REM assume next digit is zero (draw a space)
|
||||
1060 IF t>=(2^z) THEN LET d$=CHR$(143): LET t=t-(2^z): LET sf=1: REM 143 is a block
|
||||
1070 LET g$=g$+d$
|
||||
1080 NEXT z
|
||||
1090 RETURN
|
||||
|
||||
1010 LET z=16
|
||||
1020 IF t>=z THEN PRINT AT r+l-1,c+c1;CHR$ (143);: LET t=t-z: REM 143 is a block
|
||||
1040 LET c1=c1+1: LET z=z/2
|
||||
1050 IF z>=1 THEN GO TO 1020
|
||||
1060 RETURN
|
||||
2000 REM display the big letters
|
||||
2010 FOR l=1 TO 5: REM our 5 rows
|
||||
2020 PRINT AT r+l-1,c;
|
||||
2010 FOR l=1 TO 5: LET c1=0: REM our 5 rows
|
||||
2030 FOR m=1 TO 5: REM bigmap for each character
|
||||
2040 LET n=b(l,m)
|
||||
2040 LET t=b(l,m)
|
||||
2050 GO SUB 1000
|
||||
2060 PRINT g$;: REM 5 character bigmap
|
||||
2070 PRINT " ";: REM space between each letter
|
||||
2080 NEXT m
|
||||
2090 NEXT l
|
||||
2100 RETURN
|
||||
|
||||
2060 LET c1=c1+1: REM PRINT " ";: REM space between each letter
|
||||
2070 NEXT m
|
||||
2080 NEXT l
|
||||
2090 RETURN
|
||||
9000 DATA 30,17,30,17,30: REM B
|
||||
9010 DATA 14,17,31,17,17: REM A
|
||||
9020 DATA 15,16,14,1,30: REM S
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
PROC3dname("BBC BASIC")
|
||||
END
|
||||
|
||||
DEF PROC3dname(name$)
|
||||
LOCAL A%, X%, Y%, char%, row%, patt%, bit%
|
||||
DIM X% 8 : A% = 10 : Y% = X% DIV 256
|
||||
FOR row% = 1 TO 8
|
||||
FOR char% = 1 TO LEN(name$)
|
||||
?X% = ASCMID$(name$,char%)
|
||||
CALL &FFF1
|
||||
patt% = X%?row%
|
||||
FOR bit% = 7 TO 0 STEP -1
|
||||
CASE TRUE OF
|
||||
WHEN (patt% AND 2^bit%) <> 0 : PRINT "#";
|
||||
WHEN GET$(POS-1,VPOS-1) = "#": PRINT "\";
|
||||
OTHERWISE: PRINT " ";
|
||||
ENDCASE
|
||||
NEXT
|
||||
NEXT char%
|
||||
PRINT
|
||||
NEXT row%
|
||||
ENDPROC
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
void main(){
|
||||
print("""
|
||||
|
||||
XXX XX XXX XXXX
|
||||
X X X X X X X
|
||||
X X XXXX XXX X
|
||||
XXX X X X X X
|
||||
""".replaceAll('X','_/'));
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
-module(ascii3d).
|
||||
-export([decode/1]).
|
||||
|
||||
decode(Str) ->
|
||||
Splited = re:split(Str, "(\\d+)(\\D+)", [{return,list},group,trim]),
|
||||
Fun = fun([_,N,S]) -> {Num,_} = string:to_integer(N), lists:duplicate(Num, S) end,
|
||||
Joined = string:join(lists:flatmap(Fun, Splited), ""),
|
||||
Lines = binary:replace(binary:list_to_bin(Joined), <<"B">>, <<"\\">>, [global]),
|
||||
io:format("~s~n", [Lines]).
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
// version 1.1
|
||||
|
||||
class Ascii3D(s: String) {
|
||||
val z = charArrayOf(' ', ' ', '_', '/')
|
||||
|
||||
val f = arrayOf(
|
||||
longArrayOf(87381, 87381, 87381, 87381, 87381, 87381, 87381),
|
||||
longArrayOf(349525, 375733, 742837, 742837, 375733, 349525, 349525),
|
||||
longArrayOf(742741, 768853, 742837, 742837, 768853, 349525, 349525),
|
||||
longArrayOf(349525, 375733, 742741, 742741, 375733, 349525, 349525),
|
||||
longArrayOf(349621, 375733, 742837, 742837, 375733, 349525, 349525),
|
||||
longArrayOf(349525, 375637, 768949, 742741, 375733, 349525, 349525),
|
||||
longArrayOf(351157, 374101, 768949, 374101, 374101, 349525, 349525),
|
||||
longArrayOf(349525, 375733, 742837, 742837, 375733, 349621, 351157),
|
||||
longArrayOf(742741, 768853, 742837, 742837, 742837, 349525, 349525),
|
||||
longArrayOf(181, 85, 181, 181, 181, 85, 85),
|
||||
longArrayOf(1461, 1365, 1461, 1461, 1461, 1461, 2901),
|
||||
longArrayOf(742741, 744277, 767317, 744277, 742837, 349525, 349525),
|
||||
longArrayOf(181, 181, 181, 181, 181, 85, 85),
|
||||
longArrayOf(1431655765, 3149249365L, 3042661813L, 3042661813L, 3042661813L, 1431655765, 1431655765),
|
||||
longArrayOf(349525, 768853, 742837, 742837, 742837, 349525, 349525),
|
||||
longArrayOf(349525, 375637, 742837, 742837, 375637, 349525, 349525),
|
||||
longArrayOf(349525, 768853, 742837, 742837, 768853, 742741, 742741),
|
||||
longArrayOf(349525, 375733, 742837, 742837, 375733, 349621, 349621),
|
||||
longArrayOf(349525, 744373, 767317, 742741, 742741, 349525, 349525),
|
||||
longArrayOf(349525, 375733, 767317, 351157, 768853, 349525, 349525),
|
||||
longArrayOf(374101, 768949, 374101, 374101, 351157, 349525, 349525),
|
||||
longArrayOf(349525, 742837, 742837, 742837, 375733, 349525, 349525),
|
||||
longArrayOf(5592405, 11883957, 11883957, 5987157, 5616981, 5592405, 5592405),
|
||||
longArrayOf(366503875925L, 778827027893L, 778827027893L, 392374737749L, 368114513237L, 366503875925L, 366503875925L),
|
||||
longArrayOf(349525, 742837, 375637, 742837, 742837, 349525, 349525),
|
||||
longArrayOf(349525, 742837, 742837, 742837, 375733, 349621, 375637),
|
||||
longArrayOf(349525, 768949, 351061, 374101, 768949, 349525, 349525),
|
||||
longArrayOf(375637, 742837, 768949, 742837, 742837, 349525, 349525),
|
||||
longArrayOf(768853, 742837, 768853, 742837, 768853, 349525, 349525),
|
||||
longArrayOf(375733, 742741, 742741, 742741, 375733, 349525, 349525),
|
||||
longArrayOf(192213, 185709, 185709, 185709, 192213, 87381, 87381),
|
||||
longArrayOf(1817525, 1791317, 1817429, 1791317, 1817525, 1398101, 1398101),
|
||||
longArrayOf(768949, 742741, 768853, 742741, 742741, 349525, 349525),
|
||||
longArrayOf(375733, 742741, 744373, 742837, 375733, 349525, 349525),
|
||||
longArrayOf(742837, 742837, 768949, 742837, 742837, 349525, 349525),
|
||||
longArrayOf(48053, 23381, 23381, 23381, 48053, 21845, 21845),
|
||||
longArrayOf(349621, 349621, 349621, 742837, 375637, 349525, 349525),
|
||||
longArrayOf(742837, 744277, 767317, 744277, 742837, 349525, 349525),
|
||||
longArrayOf(742741, 742741, 742741, 742741, 768949, 349525, 349525),
|
||||
longArrayOf(11883957, 12278709, 11908533, 11883957, 11883957, 5592405, 5592405),
|
||||
longArrayOf(11883957, 12277173, 11908533, 11885493, 11883957, 5592405, 5592405),
|
||||
longArrayOf(375637, 742837, 742837, 742837, 375637, 349525, 349525),
|
||||
longArrayOf(768853, 742837, 768853, 742741, 742741, 349525, 349525),
|
||||
longArrayOf(6010197, 11885397, 11909973, 11885397, 6010293, 5592405, 5592405),
|
||||
longArrayOf(768853, 742837, 768853, 742837, 742837, 349525, 349525),
|
||||
longArrayOf(375733, 742741, 375637, 349621, 768853, 349525, 349525),
|
||||
longArrayOf(12303285, 5616981, 5616981, 5616981, 5616981, 5592405, 5592405),
|
||||
longArrayOf(742837, 742837, 742837, 742837, 375637, 349525, 349525),
|
||||
longArrayOf(11883957, 11883957, 11883957, 5987157, 5616981, 5592405, 5592405),
|
||||
longArrayOf(3042268597L, 3042268597L, 3042661813L, 1532713813, 1437971797, 1431655765, 1431655765),
|
||||
longArrayOf(11883957, 5987157, 5616981, 5987157, 11883957, 5592405, 5592405),
|
||||
longArrayOf(11883957, 5987157, 5616981, 5616981, 5616981, 5592405, 5592405),
|
||||
longArrayOf(12303285, 5593941, 5616981, 5985621, 12303285, 5592405, 5592405)
|
||||
)
|
||||
|
||||
init {
|
||||
val o = Array(7) { StringBuilder() }
|
||||
for (i in 0 until s.length) {
|
||||
var c = s[i].toInt()
|
||||
if (c in 65..90) {
|
||||
c -= 39
|
||||
} else if (c in 97..122) {
|
||||
c -= 97
|
||||
} else {
|
||||
c = -1
|
||||
}
|
||||
val d = f[++c]
|
||||
for (j in 0 until 7) {
|
||||
val b = StringBuilder()
|
||||
var v = d[j]
|
||||
while (v > 0) {
|
||||
b.append(z[(v and 3).toInt()])
|
||||
v = v shr 2
|
||||
}
|
||||
o[j].append(b.reverse().toString())
|
||||
}
|
||||
}
|
||||
for (i in 0 until 7) {
|
||||
for (j in 0 until 7 - i) print(' ')
|
||||
println(o[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun main(args: Array<String>) {
|
||||
Ascii3D("KOTLIN")
|
||||
Ascii3D("with thanks")
|
||||
Ascii3D("to the author")
|
||||
Ascii3D("of the")
|
||||
Ascii3D("Java entry")
|
||||
}
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
10 mode 2:defint a-z
|
||||
20 locate 1,25
|
||||
30 print "Basic";
|
||||
40 ' add some kerning so the characters will fit in 80 columns:
|
||||
50 off(2)=1:off(4)=-2:off(5)=-4
|
||||
60 for c=0 to 4
|
||||
70 for y=7 to 0 step -1
|
||||
80 for x=0 to 7
|
||||
90 v=test(x+8*c,2*y)
|
||||
100 plot x+8*c,2*y,0
|
||||
110 if v>0 then gosub 180
|
||||
120 next x
|
||||
130 next y
|
||||
140 next c
|
||||
150 call &bb06 ' wait for key press
|
||||
160 end
|
||||
170 ' print pixel
|
||||
180 xp=16*c+2*x+1+y+off(c+1)
|
||||
190 yp=8-y
|
||||
200 if xp>77 then return
|
||||
210 locate xp,yp
|
||||
220 print "//\";
|
||||
230 locate xp,yp+1
|
||||
240 print "\\/";
|
||||
250 return
|
||||
|
|
@ -1,13 +1,13 @@
|
|||
import strutils
|
||||
|
||||
const nim = """
|
||||
# # ##### # # #### #### ####
|
||||
## # # ## ## # # # # # #
|
||||
# # # # # ## # # # # # # #
|
||||
# # # # # # #### # # # #
|
||||
# ## # # # # # # # # #
|
||||
# # ##### # # # # #### ####"""
|
||||
# # ##### # #
|
||||
## # # ## ##
|
||||
# # # # # ## #
|
||||
# # # # # #
|
||||
# ## # # #
|
||||
# # ##### # #"""
|
||||
|
||||
let lines = nim.replace("#", "<<<").replace(" ", "X").replace("X", " ").replace("\n", " Y").replace("< ", "<>").split('Y')
|
||||
for i, l in lines:
|
||||
echo repeatChar((lines.len - i) * 3), l
|
||||
for i, line in lines:
|
||||
echo spaces((lines.len - i) * 3), line
|
||||
|
|
|
|||
|
|
@ -0,0 +1,7 @@
|
|||
print_string "
|
||||
_|_|_| _|_|_| _|_| _|_| _|_| _|
|
||||
_| _| _| _| _| _| _| _| _| _|
|
||||
_| _| _| _|_|_| _| _| _| _| _|
|
||||
_| _| _| _| _| _| _| _|
|
||||
_|_|_| _|_|_| _| _| _| _| _|_|_|_|_|
|
||||
"
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
#!/usr/bin/env bash
|
||||
mapfile -t name <<EOF
|
||||
### #
|
||||
# # #
|
||||
# # #
|
||||
### ## ### ###
|
||||
# # # # # #
|
||||
# # #### ## # #
|
||||
# # # ## # # #
|
||||
### ## # ### # #
|
||||
EOF
|
||||
|
||||
main() {
|
||||
banner3d_1 "${name[@]}"
|
||||
echo
|
||||
banner3d_2 "${name[@]}"
|
||||
echo
|
||||
banner3d_3 "${name[@]}"
|
||||
}
|
||||
|
||||
space() {
|
||||
local -i n i
|
||||
(( n=$1 )) || n=1
|
||||
if (( n < 1 )); then n=1; fi
|
||||
for ((i=0; i<n; ++i)); do
|
||||
printf ' '
|
||||
done
|
||||
printf '\n'
|
||||
}
|
||||
|
||||
banner3d_1() {
|
||||
local txt i
|
||||
mapfile -t txt < <(printf '%s\n' "$@" | sed -e 's,#,__/,g' -e 's/ / /g')
|
||||
for i in "${!txt[@]}"; do
|
||||
printf '%s%s\n' "$(space $(( ${#txt[@]} - i )))" "${txt[i]}"
|
||||
done
|
||||
}
|
||||
|
||||
banner3d_2() {
|
||||
local txt i line line2
|
||||
mapfile -t txt < <(printf '%s \n' "$@")
|
||||
for i in "${!txt[@]}"; do
|
||||
line=${txt[i]}
|
||||
line2=$(printf '%s%s' "$(space $(( 2 * (${#txt[@]} - i) )))" "$(sed -e 's, , ,g' -e 's,#,///,g' -e 's,/ ,/\\,g' <<<"$line")")
|
||||
printf '%s\n%s\n' "$line2" "$(tr '/\\' '\\/' <<<"$line2")"
|
||||
done
|
||||
}
|
||||
|
||||
banner3d_3() {
|
||||
# hard-coded fancy one
|
||||
cat <<'EOF'
|
||||
______________ ___________ ___________ ____ ____␣
|
||||
/ /\ / |\ /| \ |\ \ |\ \
|
||||
/_____________/ /| /___________|| ||___________\| \___\ | \___\␣
|
||||
| \ / |/ \ / | | | | | |
|
||||
| ________ | | ________ | | _________| | | | | |
|
||||
| | |___| | | | |____| | | |_______ | | |____| | |
|
||||
| | / | | /| | / | | | | \ | | | \ | |
|
||||
| |/_____| |/ | |/_____| | | |________\| | |______\| |
|
||||
| / /| | | \ | |
|
||||
| ______ \ / | _______ | \_________ | | ________ |
|
||||
| | |___| | | | | | | _________/| | | | | | |
|
||||
| | / | | | | | | | | || | | | | | |
|
||||
| |/_____| | /| | | | | |_________|/ | | | \ | |
|
||||
| |/ | | | | | | | | | \| |
|
||||
|_____________/ |___|/ |___| |_____________/ \|___| |___|
|
||||
EOF
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
10 LET s$="BASIC": REM our language name
|
||||
20 DIM b(5,5):REM our bigmap characters
|
||||
30 FOR l = 1 TO 5: REM 5 characters
|
||||
40 FOR m = 1 TO 5: REM 5 rows
|
||||
50 READ b(l,m)
|
||||
60 NEXT m
|
||||
70 NEXT l
|
||||
|
||||
100 PAPER 0: REM black background
|
||||
110 INK 2: REM our shadow will be red
|
||||
120 CLS
|
||||
130 LET r=9: REM shadow will start on row 5
|
||||
140 LET c=2: REM shadow will start at column 2
|
||||
150 GO SUB 2000: REM draw shadow
|
||||
160 INK 6: REM our forground will be yellow
|
||||
170 LET r=10: REM foreground will start on row 6
|
||||
180 LET c=3: REM foreground will start on column 3
|
||||
190 GO SUB 2000: REM display the language name
|
||||
|
||||
999 STOP
|
||||
|
||||
1000 REM convert to binary bigmap
|
||||
1010 LET t=n: REM temporary variable
|
||||
1020 LET g$="": REM this will contain our 5 character binary bigmap
|
||||
1040 FOR z=5 TO 0 STEP -1
|
||||
1050 LET d$=" ": REM assume next digit is zero (draw a space)
|
||||
1060 IF t>=(2^z) THEN LET d$=CHR$(143): LET t=t-(2^z): LET sf=1: REM 143 is a block
|
||||
1070 LET g$=g$+d$
|
||||
1080 NEXT z
|
||||
1090 RETURN
|
||||
|
||||
2000 REM display the big letters
|
||||
2010 FOR l=1 TO 5: REM our 5 rows
|
||||
2020 PRINT AT r+l-1,c;
|
||||
2030 FOR m=1 TO 5: REM bigmap for each character
|
||||
2040 LET n=b(l,m)
|
||||
2050 GO SUB 1000
|
||||
2060 PRINT g$;: REM 5 character bigmap
|
||||
2070 PRINT " ";: REM space between each letter
|
||||
2080 NEXT m
|
||||
2090 NEXT l
|
||||
2100 RETURN
|
||||
|
||||
9000 DATA 30,17,30,17,30: REM B
|
||||
9010 DATA 14,17,31,17,17: REM A
|
||||
9020 DATA 15,16,14,1,30: REM S
|
||||
9030 DATA 31,4,4,4,31: REM I
|
||||
9040 DATA 14,17,16,17,14: REM C
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
#<<<
|
||||
"
|
||||
xxxxxx x x x
|
||||
x x x x
|
||||
x x x x
|
||||
x x x x
|
||||
xxxxx x x xxxx
|
||||
"
|
||||
#<<<<
|
||||
.replace(" "," ").replace("x","_/").println();
|
||||
Loading…
Add table
Add a link
Reference in a new issue