Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
41
Task/Happy-numbers/Ada/happy-numbers.adb
Normal file
41
Task/Happy-numbers/Ada/happy-numbers.adb
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Ada.Containers.Ordered_Sets;
|
||||
|
||||
procedure Test_Happy_Digits is
|
||||
function Is_Happy (N : Positive) return Boolean is
|
||||
package Sets_Of_Positive is new Ada.Containers.Ordered_Sets (Positive);
|
||||
use Sets_Of_Positive;
|
||||
function Next (N : Positive) return Natural is
|
||||
Sum : Natural := 0;
|
||||
Accum : Natural := N;
|
||||
begin
|
||||
while Accum > 0 loop
|
||||
Sum := Sum + (Accum mod 10) ** 2;
|
||||
Accum := Accum / 10;
|
||||
end loop;
|
||||
return Sum;
|
||||
end Next;
|
||||
Current : Positive := N;
|
||||
Visited : Set;
|
||||
begin
|
||||
loop
|
||||
if Current = 1 then
|
||||
return True;
|
||||
elsif Visited.Contains (Current) then
|
||||
return False;
|
||||
else
|
||||
Visited.Insert (Current);
|
||||
Current := Next (Current);
|
||||
end if;
|
||||
end loop;
|
||||
end Is_Happy;
|
||||
Found : Natural := 0;
|
||||
begin
|
||||
for N in Positive'Range loop
|
||||
if Is_Happy (N) then
|
||||
Put (Integer'Image (N));
|
||||
Found := Found + 1;
|
||||
exit when Found = 8;
|
||||
end if;
|
||||
end loop;
|
||||
end Test_Happy_Digits;
|
||||
22
Task/Happy-numbers/AutoIt/happy-numbers-1.au3
Normal file
22
Task/Happy-numbers/AutoIt/happy-numbers-1.au3
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
$c = 0
|
||||
$k = 0
|
||||
While $c < 8
|
||||
$k += 1
|
||||
$n = $k
|
||||
While $n <> 1
|
||||
$s = StringSplit($n, "")
|
||||
$t = 0
|
||||
For $i = 1 To $s[0]
|
||||
$t += $s[$i] ^ 2
|
||||
Next
|
||||
$n = $t
|
||||
Switch $n
|
||||
Case 4,16,37,58,89,145,42,20
|
||||
ExitLoop
|
||||
EndSwitch
|
||||
WEnd
|
||||
If $n = 1 Then
|
||||
ConsoleWrite($k & " is Happy" & @CRLF)
|
||||
$c += 1
|
||||
EndIf
|
||||
WEnd
|
||||
24
Task/Happy-numbers/AutoIt/happy-numbers-2.au3
Normal file
24
Task/Happy-numbers/AutoIt/happy-numbers-2.au3
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
$c = 0
|
||||
$k = 0
|
||||
While $c < 8
|
||||
$a = ObjCreate("System.Collections.ArrayList")
|
||||
$k += 1
|
||||
$n = $k
|
||||
While $n <> 1
|
||||
If $a.Contains($n) Then
|
||||
ExitLoop
|
||||
EndIf
|
||||
$a.add($n)
|
||||
$s = StringSplit($n, "")
|
||||
$t = 0
|
||||
For $i = 1 To $s[0]
|
||||
$t += $s[$i] ^ 2
|
||||
Next
|
||||
$n = $t
|
||||
WEnd
|
||||
If $n = 1 Then
|
||||
ConsoleWrite($k & " is Happy" & @CRLF)
|
||||
$c += 1
|
||||
EndIf
|
||||
$a.Clear
|
||||
WEnd
|
||||
56
Task/Happy-numbers/COBOL/happy-numbers.cob
Normal file
56
Task/Happy-numbers/COBOL/happy-numbers.cob
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. HAPPY.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
01 VARIABLES.
|
||||
03 CANDIDATE PIC 9(4).
|
||||
03 SQSUM-IN PIC 9(4).
|
||||
03 FILLER REDEFINES SQSUM-IN.
|
||||
05 DIGITS PIC 9 OCCURS 4 TIMES.
|
||||
03 SQUARE PIC 9(4).
|
||||
03 SUM-OF-SQUARES PIC 9(4).
|
||||
03 N PIC 9.
|
||||
03 TORTOISE PIC 9(4).
|
||||
03 HARE PIC 9(4).
|
||||
88 HAPPY VALUE 1.
|
||||
03 SEEN PIC 9 VALUE ZERO.
|
||||
03 OUT-FMT PIC ZZZ9.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
BEGIN.
|
||||
PERFORM DISPLAY-IF-HAPPY VARYING CANDIDATE FROM 1 BY 1
|
||||
UNTIL SEEN IS EQUAL TO 8.
|
||||
STOP RUN.
|
||||
|
||||
DISPLAY-IF-HAPPY.
|
||||
PERFORM CHECK-HAPPY.
|
||||
IF HAPPY,
|
||||
MOVE CANDIDATE TO OUT-FMT,
|
||||
DISPLAY OUT-FMT,
|
||||
ADD 1 TO SEEN.
|
||||
|
||||
CHECK-HAPPY.
|
||||
MOVE CANDIDATE TO TORTOISE, SQSUM-IN.
|
||||
PERFORM CALC-SUM-OF-SQUARES.
|
||||
MOVE SUM-OF-SQUARES TO HARE.
|
||||
PERFORM CHECK-HAPPY-STEP UNTIL TORTOISE IS EQUAL TO HARE.
|
||||
|
||||
CHECK-HAPPY-STEP.
|
||||
MOVE TORTOISE TO SQSUM-IN.
|
||||
PERFORM CALC-SUM-OF-SQUARES.
|
||||
MOVE SUM-OF-SQUARES TO TORTOISE.
|
||||
MOVE HARE TO SQSUM-IN.
|
||||
PERFORM CALC-SUM-OF-SQUARES.
|
||||
MOVE SUM-OF-SQUARES TO SQSUM-IN.
|
||||
PERFORM CALC-SUM-OF-SQUARES.
|
||||
MOVE SUM-OF-SQUARES TO HARE.
|
||||
|
||||
CALC-SUM-OF-SQUARES.
|
||||
MOVE ZERO TO SUM-OF-SQUARES.
|
||||
PERFORM ADD-DIGIT-SQUARE VARYING N FROM 1 BY 1
|
||||
UNTIL N IS GREATER THAN 4.
|
||||
|
||||
ADD-DIGIT-SQUARE.
|
||||
MULTIPLY DIGITS(N) BY DIGITS(N) GIVING SQUARE.
|
||||
ADD SQUARE TO SUM-OF-SQUARES.
|
||||
29
Task/Happy-numbers/Euphoria/happy-numbers.eu
Normal file
29
Task/Happy-numbers/Euphoria/happy-numbers.eu
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
function is_happy(integer n)
|
||||
sequence seen
|
||||
integer k
|
||||
seen = {}
|
||||
while n > 1 do
|
||||
seen &= n
|
||||
k = 0
|
||||
while n > 0 do
|
||||
k += power(remainder(n,10),2)
|
||||
n = floor(n/10)
|
||||
end while
|
||||
n = k
|
||||
if find(n,seen) then
|
||||
return 0
|
||||
end if
|
||||
end while
|
||||
return 1
|
||||
end function
|
||||
|
||||
integer n,count
|
||||
n = 1
|
||||
count = 0
|
||||
while count < 8 do
|
||||
if is_happy(n) then
|
||||
? n
|
||||
count += 1
|
||||
end if
|
||||
n += 1
|
||||
end while
|
||||
14
Task/Happy-numbers/Haskell/happy-numbers-3.hs
Normal file
14
Task/Happy-numbers/Haskell/happy-numbers-3.hs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
happy x = sum (map (\x -> x * x) (digits x))
|
||||
where
|
||||
digits 0 = [0]
|
||||
digits x = (x `mod` 10):(digits (x `div` 10)) -- could function digits be more concise?
|
||||
|
||||
ishappy x = floyd (happy x) (happy (happy x))
|
||||
where
|
||||
floyd :: Int -> Int -> Bool
|
||||
floyd 1 _ = True
|
||||
floyd _ 1 = True
|
||||
floyd a b | a == b = False
|
||||
floyd x y = floyd (happy x) (happy (happy y))
|
||||
|
||||
main = (print $ take 8 $ filter ishappy [1..]) >> (print $ sum $ take 10000 $ filter ishappy [1..]
|
||||
26
Task/Happy-numbers/Pluto/happy-numbers.pluto
Normal file
26
Task/Happy-numbers/Pluto/happy-numbers.pluto
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
local function happy(n)
|
||||
local m = {}
|
||||
while n > 1 do
|
||||
m[n] = true
|
||||
local x = n
|
||||
n = 0
|
||||
while x > 0 do
|
||||
local d = x % 10
|
||||
n += d * d
|
||||
x //= 10
|
||||
end
|
||||
if m[n] then return false end -- m[n] will be nil if 'n' is not a key
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local found = 0
|
||||
local n = 1
|
||||
while found < 8 do
|
||||
if happy(n) then
|
||||
io.write($"{n} ")
|
||||
found += 1
|
||||
end
|
||||
n += 1
|
||||
end
|
||||
print()
|
||||
20
Task/Happy-numbers/PowerShell/happy-numbers-1.ps1
Normal file
20
Task/Happy-numbers/PowerShell/happy-numbers-1.ps1
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
function happy([int] $n) {
|
||||
$a=@()
|
||||
for($i=2;$a.count -lt $n;$i++) {
|
||||
$sum=$i
|
||||
$hist=@{}
|
||||
while( $hist[$sum] -eq $null ) {
|
||||
if($sum -eq 1) {
|
||||
$a+=$i
|
||||
}
|
||||
$hist[$sum]=$sum
|
||||
$sum2=0
|
||||
foreach($j in $sum.ToString().ToCharArray()) {
|
||||
$k=([int]$j)-0x30
|
||||
$sum2+=$k*$k
|
||||
}
|
||||
$sum=$sum2
|
||||
}
|
||||
}
|
||||
$a -join ','
|
||||
}
|
||||
2
Task/Happy-numbers/PowerShell/happy-numbers-2.ps1
Normal file
2
Task/Happy-numbers/PowerShell/happy-numbers-2.ps1
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
happy(8)
|
||||
7,10,13,19,23,28,31,32
|
||||
|
|
@ -1,16 +1,14 @@
|
|||
fn happy(h int) bool {
|
||||
mut m := map[int]bool{}
|
||||
mut n := h
|
||||
mut n, mut x := h, 0
|
||||
for n > 1 {
|
||||
m[n] = true
|
||||
mut x := 0
|
||||
x = 0
|
||||
for x, n = n, 0; x > 0; x /= 10 {
|
||||
d := x % 10
|
||||
n += d * d
|
||||
}
|
||||
if m[n] {
|
||||
return false
|
||||
}
|
||||
if m[n] { return false }
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
@ -22,5 +20,5 @@ fn main() {
|
|||
found++
|
||||
}
|
||||
}
|
||||
println('')
|
||||
println("")
|
||||
}
|
||||
|
|
|
|||
30
Task/Happy-numbers/VBScript/happy-numbers.vbs
Normal file
30
Task/Happy-numbers/VBScript/happy-numbers.vbs
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
count = 0
|
||||
firsteigth=""
|
||||
For i = 1 To 100
|
||||
If IsHappy(CInt(i)) Then
|
||||
firsteight = firsteight & i & ","
|
||||
count = count + 1
|
||||
End If
|
||||
If count = 8 Then
|
||||
Exit For
|
||||
End If
|
||||
Next
|
||||
WScript.Echo firsteight
|
||||
|
||||
Function IsHappy(n)
|
||||
IsHappy = False
|
||||
m = 0
|
||||
Do Until m = 60
|
||||
sum = 0
|
||||
For j = 1 To Len(n)
|
||||
sum = sum + (Mid(n,j,1))^2
|
||||
Next
|
||||
If sum = 1 Then
|
||||
IsHappy = True
|
||||
Exit Do
|
||||
Else
|
||||
n = sum
|
||||
m = m + 1
|
||||
End If
|
||||
Loop
|
||||
End Function
|
||||
Loading…
Add table
Add a link
Reference in a new issue