Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,6 +0,0 @@
|
|||
with Interfaces;
|
||||
|
||||
package Population_Count is
|
||||
subtype Num is Interfaces.Unsigned_64;
|
||||
function Pop_Count(N: Num) return Natural;
|
||||
end Population_Count;
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
package body Population_Count is
|
||||
|
||||
function Pop_Count(N: Num) return Natural is
|
||||
use Interfaces;
|
||||
K5555: constant Unsigned_64 := 16#5555555555555555#;
|
||||
K3333: constant Unsigned_64 := 16#3333333333333333#;
|
||||
K0f0f: constant Unsigned_64 := 16#0f0f0f0f0f0f0f0f#;
|
||||
K0101: constant Unsigned_64 := 16#0101010101010101#;
|
||||
X: Unsigned_64 := N;
|
||||
begin
|
||||
X := X - (Shift_Right(X, 1) and k5555);
|
||||
X := (X and k3333) + (Shift_Right(X, 2) and k3333);
|
||||
X := (X + (Shift_Right(X, 4)) and K0f0f);
|
||||
X := Shift_Right((x * k0101), 56);
|
||||
return Natural(X);
|
||||
end Pop_Count;
|
||||
|
||||
end Population_Count;
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
with Ada.Text_IO, Population_Count; use Ada.Text_IO; use Population_Count;
|
||||
|
||||
procedure Test_Pop_Count is
|
||||
|
||||
X: Num; use type Num;
|
||||
|
||||
begin
|
||||
Put("Pop_Cnt(3**i):"); -- print pop_counts of powers of three
|
||||
X := 1; -- X=3**0
|
||||
for I in 1 .. 30 loop
|
||||
Put(Natural'Image(Pop_Count(X)));
|
||||
X := X * 3;
|
||||
end loop;
|
||||
New_Line;
|
||||
|
||||
Put("Evil: "); -- print first thirty evil numbers
|
||||
X := 0;
|
||||
for I in 1 .. 30 loop
|
||||
while Pop_Count(X) mod 2 /= 0 loop -- X is not evil
|
||||
X := X + 1;
|
||||
end loop;
|
||||
Put(Num'Image(X));
|
||||
X := X + 1;
|
||||
end loop;
|
||||
New_Line;
|
||||
|
||||
Put("Odious: "); -- print thirty oudous numbers
|
||||
X := 1;
|
||||
for I in 1 .. 30 loop
|
||||
while Pop_Count(X) mod 2 /= 1 loop -- X is not odious
|
||||
X := X + 1;
|
||||
end loop;
|
||||
Put(Num'Image(X));
|
||||
X := X + 1;
|
||||
end loop;
|
||||
New_Line;
|
||||
end Test_Pop_Count;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
popCount: function [num][
|
||||
size select split to :string as.binary num 'x -> x="1"
|
||||
size select split to :string .format:".b" num 'x -> x="1"
|
||||
]
|
||||
|
||||
print "population count for the first thirty powers of 3:"
|
||||
|
|
|
|||
|
|
@ -1,73 +0,0 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. HAMMING.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 POPCOUNT-VARIABLES.
|
||||
03 POPCOUNT-IN PIC 9(15)V9.
|
||||
03 FILLER REDEFINES POPCOUNT-IN.
|
||||
05 POPCOUNT-REST PIC 9(15).
|
||||
05 FILLER PIC 9.
|
||||
88 BIT-IS-SET VALUE 5.
|
||||
03 POPCOUNT-OUT PIC 99.
|
||||
03 FILLER REDEFINES POPCOUNT-OUT.
|
||||
05 FILLER PIC 9.
|
||||
05 FILLER PIC 9.
|
||||
88 EVIL VALUES 0, 2, 4, 6, 8.
|
||||
88 ODIOUS VALUES 1, 3, 5, 7, 9.
|
||||
|
||||
01 STATE-VARIABLES.
|
||||
03 CUR-POWER-3 PIC 9(15) VALUE 1.
|
||||
03 CUR-EVIL-NUM PIC 99 VALUE 0.
|
||||
03 CUR-ODIOUS-NUM PIC 99 VALUE 0.
|
||||
03 LINE-INDEX PIC 99 VALUE 1.
|
||||
|
||||
01 OUTPUT-FORMAT.
|
||||
03 LINENO PIC Z9.
|
||||
03 FILLER PIC X VALUE '.'.
|
||||
03 FILLER PIC XX VALUE SPACES.
|
||||
03 OUT-POW3 PIC Z9.
|
||||
03 FILLER PIC X(4) VALUE SPACES.
|
||||
03 OUT-EVIL PIC Z9.
|
||||
03 FILLER PIC X(4) VALUE SPACES.
|
||||
03 OUT-ODIOUS PIC Z9.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
BEGIN.
|
||||
DISPLAY " 3^ EVIL ODD"
|
||||
PERFORM MAKE-LINE 30 TIMES.
|
||||
STOP RUN.
|
||||
|
||||
MAKE-LINE.
|
||||
MOVE LINE-INDEX TO LINENO.
|
||||
MOVE CUR-POWER-3 TO POPCOUNT-IN.
|
||||
PERFORM FIND-POPCOUNT.
|
||||
MOVE POPCOUNT-OUT TO OUT-POW3.
|
||||
PERFORM FIND-EVIL.
|
||||
MOVE CUR-EVIL-NUM TO OUT-EVIL.
|
||||
PERFORM FIND-ODIOUS.
|
||||
MOVE CUR-ODIOUS-NUM TO OUT-ODIOUS.
|
||||
DISPLAY OUTPUT-FORMAT.
|
||||
MULTIPLY 3 BY CUR-POWER-3.
|
||||
ADD 1 TO CUR-EVIL-NUM.
|
||||
ADD 1 TO CUR-ODIOUS-NUM.
|
||||
ADD 1 TO LINE-INDEX.
|
||||
|
||||
FIND-EVIL.
|
||||
MOVE CUR-EVIL-NUM TO POPCOUNT-IN.
|
||||
PERFORM FIND-POPCOUNT.
|
||||
IF NOT EVIL, ADD 1 TO CUR-EVIL-NUM, GO TO FIND-EVIL.
|
||||
|
||||
FIND-ODIOUS.
|
||||
MOVE CUR-ODIOUS-NUM TO POPCOUNT-IN.
|
||||
PERFORM FIND-POPCOUNT.
|
||||
IF NOT ODIOUS, ADD 1 TO CUR-ODIOUS-NUM, GO TO FIND-ODIOUS.
|
||||
|
||||
FIND-POPCOUNT.
|
||||
MOVE 0 TO POPCOUNT-OUT.
|
||||
PERFORM PROCESS-BIT UNTIL POPCOUNT-IN IS EQUAL TO ZERO.
|
||||
|
||||
PROCESS-BIT.
|
||||
DIVIDE 2 INTO POPCOUNT-IN.
|
||||
IF BIT-IS-SET, ADD 1 TO POPCOUNT-OUT.
|
||||
MOVE POPCOUNT-REST TO POPCOUNT-IN.
|
||||
|
|
@ -1,29 +1,27 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">pop_count</span><span style="color: #0000FF;">(</span><span style="color: #004080;">atom</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;"><</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #0000FF;">?</span><span style="color: #000000;">9</span><span style="color: #0000FF;">/</span><span style="color: #000000;">0</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">while</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">0</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">+=</span> <span style="color: #7060A8;">and_bits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">n</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">/</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
with javascript_semantics
|
||||
function pop_count(atom n)
|
||||
if n<0 then ?9/0 end if
|
||||
integer res = 0
|
||||
while n!=0 do
|
||||
res += and_bits(n,1)
|
||||
n = floor(n/2)
|
||||
end while
|
||||
return res
|
||||
end function
|
||||
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"3^x pop_counts:%v\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">apply</span><span style="color: #0000FF;">(</span><span style="color: #004600;">true</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">power</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">3</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">tagset</span><span style="color: #0000FF;">(</span><span style="color: #000000;">29</span><span style="color: #0000FF;">,</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)}),</span><span style="color: #000000;">pop_count</span><span style="color: #0000FF;">)})</span>
|
||||
printf(1,"3^x pop_counts:%v\n",{apply(apply(true,power,{3,tagset(29,0)}),pop_count)})
|
||||
|
||||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">eo</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">b0</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">string</span> <span style="color: #000000;">name</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">30</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">while</span> <span style="color: #000000;">l</span><span style="color: #0000FF;"><=</span><span style="color: #000000;">30</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">and_bits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">pop_count</span><span style="color: #0000FF;">(</span><span style="color: #000000;">k</span><span style="color: #0000FF;">),</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)=</span><span style="color: #000000;">b0</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">l</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">k</span>
|
||||
<span style="color: #000000;">l</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000000;">k</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">while</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%s numbers:%v\n"</span><span style="color: #0000FF;">,{</span><span style="color: #000000;">name</span><span style="color: #0000FF;">,</span><span style="color: #000000;">s</span><span style="color: #0000FF;">})</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
|
||||
<span style="color: #000000;">eo</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" evil"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">eo</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"odious"</span><span style="color: #0000FF;">)</span>
|
||||
<!--
|
||||
procedure eo(integer b0, string name)
|
||||
sequence s = repeat(0,30)
|
||||
integer k=0, l=1
|
||||
while l<=30 do
|
||||
if and_bits(pop_count(k),1)=b0 then
|
||||
s[l] = k
|
||||
l += 1
|
||||
end if
|
||||
k += 1
|
||||
end while
|
||||
printf(1,"%s numbers:%v\n",{name,s})
|
||||
end procedure
|
||||
eo(0," evil")
|
||||
eo(1,"odious")
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
function pop-count($n) {
|
||||
(([Convert]::ToString($n, 2)).toCharArray() | where {$_ -eq '1'}).count
|
||||
}
|
||||
"pop_count 3^n: $(1..29 | foreach -Begin {$n = 1; (pop-count $n)} -Process {$n = 3*$n; (pop-count $n)} )"
|
||||
"even pop_count: $($m = $n = 0; while($m -lt 30) {if(0 -eq ((pop-count $n)%2)) {$m += 1; $n}; $n += 1} )"
|
||||
"odd pop_count: $($m = $n = 0; while($m -lt 30) {if(1 -eq ((pop-count $n)%2)) {$m += 1; $n}; $n += 1} )"
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
' Population count - VBScript - 10/05/2019
|
||||
nmax=30
|
||||
b=3
|
||||
n=0: list="": bb=1
|
||||
For i=0 To nmax-1
|
||||
list=list & " " & popcount(bb)
|
||||
bb=bb*b
|
||||
Next 'i
|
||||
Msgbox list,,"popcounts of the powers of " & b
|
||||
For j=0 to 1
|
||||
If j=0 Then c="evil numbers": Else c="odious numbers"
|
||||
n=0: list="": i=0
|
||||
While n<nmax
|
||||
If (popcount(i) Mod 2)=j Then
|
||||
n=n+1
|
||||
list=list & " " & i
|
||||
End If
|
||||
i=i+1
|
||||
Wend
|
||||
Msgbox list,,c
|
||||
Next 'j
|
||||
|
||||
Function popcount(x)
|
||||
Dim y,xx,xq,xr
|
||||
xx=x
|
||||
While xx>0
|
||||
xq=Int(xx/2)
|
||||
xr=xx-xq*2
|
||||
If xr=1 Then y=y+1
|
||||
xx=xq
|
||||
Wend
|
||||
popcount=y
|
||||
End Function 'popcount
|
||||
Loading…
Add table
Add a link
Reference in a new issue