Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
21
Task/Binary-digits/CBASIC/binary-digits.basic
Normal file
21
Task/Binary-digits/CBASIC/binary-digits.basic
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
rem - Return binary representation of n as a string
|
||||
def fn.bin$(n%)
|
||||
s$ = ""
|
||||
while n% > 0
|
||||
if (n% - (n% / 2) * 2) = 0 then \
|
||||
s$ = "0" + s$ \
|
||||
else \
|
||||
s$ = "1" + s$
|
||||
n% = n% / 2
|
||||
wend
|
||||
fn.bin$ = s$
|
||||
return
|
||||
fend
|
||||
|
||||
rem - exercise the function
|
||||
|
||||
print "5 = "; fn.bin$(5)
|
||||
print "50 = "; fn.bin$(50)
|
||||
print "9000 = "; fn.bin$(9000)
|
||||
|
||||
end
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
func$ bin num .
|
||||
b$ = ""
|
||||
while num > 1
|
||||
b$ = num mod 2 & b$
|
||||
num = num div 2
|
||||
|
|
|
|||
2
Task/Binary-digits/Ed/binary-digits-1.ed
Normal file
2
Task/Binary-digits/Ed/binary-digits-1.ed
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
90
Task/Binary-digits/Ed/binary-digits-2.ed
Normal file
90
Task/Binary-digits/Ed/binary-digits-2.ed
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
# by Artyom Bologov
|
||||
H
|
||||
# decimal -> unary
|
||||
g/[^0-9]\{1,\}/s///g
|
||||
g/^0\{1,\}\([0-9]\)/s//\1/
|
||||
g/^9\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
|
||||
g/^8\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
|
||||
g/^7\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
|
||||
g/^6\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
|
||||
g/^5\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
|
||||
g/^4\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
|
||||
g/^3\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
|
||||
g/^2\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
|
||||
g/^1\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2i/
|
||||
g/^0\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2/
|
||||
g/^9\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
|
||||
g/^8\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
|
||||
g/^7\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
|
||||
g/^6\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
|
||||
g/^5\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
|
||||
g/^4\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
|
||||
g/^3\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
|
||||
g/^2\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
|
||||
g/^1\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2i/
|
||||
g/^0\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2/
|
||||
g/^9\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
|
||||
g/^8\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
|
||||
g/^7\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
|
||||
g/^6\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
|
||||
g/^5\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
|
||||
g/^4\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
|
||||
g/^3\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
|
||||
g/^2\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
|
||||
g/^1\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2i/
|
||||
g/^0\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2/
|
||||
g/^9\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
|
||||
g/^8\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
|
||||
g/^7\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
|
||||
g/^6\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
|
||||
g/^5\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
|
||||
g/^4\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
|
||||
g/^3\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
|
||||
g/^2\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
|
||||
g/^1\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2i/
|
||||
g/^0\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2/
|
||||
g/^9\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiiii/
|
||||
g/^8\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiiii/
|
||||
g/^7\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiiii/
|
||||
g/^6\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiiii/
|
||||
g/^5\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiiii/
|
||||
g/^4\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iiii/
|
||||
g/^3\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2iii/
|
||||
g/^2\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2ii/
|
||||
g/^1\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2i/
|
||||
g/^0\([0-9]*\)\(i*\)/s//\1\2\2\2\2\2\2\2\2\2\2/
|
||||
# actual logic
|
||||
g/.*/s/$/0/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^\(i*\)\1i\([^i]\)/s//\11\2/
|
||||
g/^\(i*\)\1\([^i]\)/s//\10\2/
|
||||
g/^0*\(1.*\)0$/s//\1/
|
||||
,p
|
||||
Q
|
||||
3
Task/Binary-digits/Nu/binary-digits.nu
Normal file
3
Task/Binary-digits/Nu/binary-digits.nu
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
def bin [x] { $x | (fmt).binary | str substring 2.. }
|
||||
|
||||
[0 1 2 5 50 9000] | each { {dec: $in bin: (bin $in)} }
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
GetBits ← &pf@\n≡&pf ⇌⋯
|
||||
≡GetBits 5_50_9000
|
||||
PrintBits ← &p/$"__"⇌⋯
|
||||
≡PrintBits 5_50_9000
|
||||
|
|
|
|||
45
Task/Binary-digits/X86-64-Assembly/binary-digits-1.x86-64
Normal file
45
Task/Binary-digits/X86-64-Assembly/binary-digits-1.x86-64
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
format ELF64 executable 9
|
||||
|
||||
segment readable
|
||||
nums: dd 5, 50, 9000, 0 ;numbers to convert, 0 as end of data indicator
|
||||
|
||||
segment readable writable
|
||||
result: times 16 db 0 ;empty string for printing the result later
|
||||
db 10, 0
|
||||
|
||||
segment readable executable
|
||||
entry start
|
||||
|
||||
start:
|
||||
xor rbx, rbx ;index for nums
|
||||
mov eax, [nums + 4 * rbx]
|
||||
mov rcx, 16 ;index for result string
|
||||
|
||||
convert:
|
||||
dec rcx
|
||||
mov rdi, 1 ;get least significant bit
|
||||
and rdi, rax
|
||||
add rdi, '0' ;convert to char
|
||||
mov [result + rcx], dil ;and put it in result[ecx]
|
||||
shr rax, 1 ;right shift, 1 bit
|
||||
test rax, rax ;eax still > 0
|
||||
jnz convert ;if yes, repeat
|
||||
|
||||
mov rax, 4 ;print result
|
||||
mov rdi, 1
|
||||
mov rsi, result
|
||||
mov rdx, 18
|
||||
syscall
|
||||
|
||||
xor rax, rax ;reset string to 0s (not strictly needed,
|
||||
mov [result], rax ;because we have increasing numbers, and
|
||||
mov [result + 8], rax ;old chars will be overwritten)
|
||||
inc rbx ;and repeat if list isn't done
|
||||
mov eax, [nums + 4 * rbx]
|
||||
mov rcx, 16
|
||||
test rax, rax
|
||||
jnz convert
|
||||
|
||||
mov rax, 1 ;exit
|
||||
xor rdi, rdi
|
||||
syscall
|
||||
150
Task/Binary-digits/X86-64-Assembly/binary-digits-2.x86-64
Normal file
150
Task/Binary-digits/X86-64-Assembly/binary-digits-2.x86-64
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
global _start
|
||||
|
||||
bsize equ 72
|
||||
outbase equ 2 ; 2 to 16
|
||||
section .text
|
||||
_start:
|
||||
pop rcx
|
||||
dec rcx
|
||||
or rcx, rcx
|
||||
jz .exit0
|
||||
pop rdx
|
||||
xor rdx, rdx
|
||||
.cmdloop:
|
||||
pop rdi
|
||||
call atoq
|
||||
mov qword [slot + rdx * 8], rax
|
||||
inc rdx
|
||||
cmp rdx, rcx
|
||||
jne .cmdloop
|
||||
xor rdx, rdx
|
||||
.printloop:
|
||||
mov rdi, qword [slot + rdx * 8]
|
||||
call printq
|
||||
inc rdx
|
||||
cmp rdx, rcx
|
||||
jne .printloop
|
||||
.exit0:
|
||||
mov rax, 60
|
||||
mov rdi, 0
|
||||
syscall
|
||||
atoq:
|
||||
push r8
|
||||
push r9
|
||||
push rdi
|
||||
push rsi
|
||||
push rdx
|
||||
push rcx
|
||||
xor rcx, rcx
|
||||
xor rax, rax
|
||||
xor r8, r8
|
||||
mov r9, 1
|
||||
cmp byte[rdi], 0
|
||||
jz .exit
|
||||
cmp byte[rdi], '-'
|
||||
jne .stbegin
|
||||
mov r9, -1
|
||||
inc rdi
|
||||
.stbegin:
|
||||
cmp byte[rdi], '0'
|
||||
jl .return
|
||||
cmp byte[rdi], '9'
|
||||
jg .return
|
||||
.stloop:
|
||||
cmp byte[rdi + r8], '0'
|
||||
jl .calc0
|
||||
cmp byte[rdi + r8], '9'
|
||||
jg .calc0
|
||||
mov sil, byte[rdi + r8]
|
||||
sub rsi, '0'
|
||||
push rsi
|
||||
inc r8
|
||||
jmp .stloop
|
||||
.calc0:
|
||||
xor rcx, rcx
|
||||
mov rdi, 10
|
||||
mov rsi, 1
|
||||
.calc1:
|
||||
pop rax
|
||||
mul rsi
|
||||
add rcx, rax
|
||||
dec r8
|
||||
jz .return
|
||||
mov rax, rsi
|
||||
mul rdi
|
||||
mov rsi, rax
|
||||
jmp .calc1
|
||||
.return:
|
||||
xor rdx, rdx
|
||||
mov rax, rcx
|
||||
imul r9
|
||||
.exit:
|
||||
pop rcx
|
||||
pop rdx
|
||||
pop rsi
|
||||
pop rdi
|
||||
pop r9
|
||||
pop r8
|
||||
ret
|
||||
|
||||
printq:
|
||||
push r9
|
||||
push rdi
|
||||
push rsi
|
||||
push rdx
|
||||
push rcx
|
||||
push rax
|
||||
mov rax, rdi
|
||||
mov r9, bsize
|
||||
dec r9
|
||||
mov rsi, outbase
|
||||
sub rsp, bsize
|
||||
sub rax, 0
|
||||
jns .stloop
|
||||
neg rax
|
||||
.stloop:
|
||||
xor rdx, rdx
|
||||
div rsi
|
||||
mov dl, byte [charset + rdx]
|
||||
mov byte[rsp + r9], dl
|
||||
sub rax, 0
|
||||
jz .negtest
|
||||
dec r9
|
||||
jmp .stloop
|
||||
.negtest:
|
||||
sub rdi, 0
|
||||
jns .printit
|
||||
dec r9
|
||||
mov byte[rsp + r9], '-'
|
||||
.printit:
|
||||
mov rdx, bsize
|
||||
sub rdx, r9
|
||||
mov rsi, rsp
|
||||
add rsi, r9
|
||||
mov rdi, 1
|
||||
mov rax, 1
|
||||
syscall
|
||||
mov rsi, 0x0a
|
||||
push rsi
|
||||
mov rsi, rsp
|
||||
mov rdx, 1
|
||||
mov rax, 1
|
||||
mov rdi, 1
|
||||
syscall
|
||||
pop rsi
|
||||
.restores:
|
||||
add rsp, bsize
|
||||
pop rax
|
||||
pop rcx
|
||||
pop rdx
|
||||
pop rsi
|
||||
pop rdi
|
||||
pop r9
|
||||
.return:
|
||||
ret
|
||||
|
||||
|
||||
section .data
|
||||
charset: db "0123456789abcdef"
|
||||
section .bss
|
||||
slot: resq 16
|
||||
Loading…
Add table
Add a link
Reference in a new issue