Collect and sort square numbers in ascending order from three lists: Difference between revisions
Thundergnat (talk | contribs) m (→{{header|Raku}}: remove a layer of indirection) |
mNo edit summary |
||
Line 7: | Line 7: | ||
<br>list[2] = [2,8,81,169,34,55,76,49,7] |
<br>list[2] = [2,8,81,169,34,55,76,49,7] |
||
<br>list[3] = [75,121,75,144,35,16,46,35] |
<br>list[3] = [75,121,75,144,35,16,46,35] |
||
=={{header|Julia}}== |
|||
<lang julia>lists = [ |
|||
[3,4,34,25,9,12,36,56,36], |
|||
[2,8,81,169,34,55,76,49,7], |
|||
[75,121,75,144,35,16,46,35] |
|||
] |
|||
squares = reduce(vcat, [[s for s in list if isqrt(s)^2 == s] for list in lists]) |
|||
sort!(squares) |
|||
println(squares) |
|||
</lang> |
|||
=={{header|Raku}}== |
=={{header|Raku}}== |
Revision as of 17:45, 10 December 2021
- Task
Add and sort suare numbers in ascending order from three lists.
list[1] = [3,4,34,25,9,12,36,56,36]
list[2] = [2,8,81,169,34,55,76,49,7]
list[3] = [75,121,75,144,35,16,46,35]
Julia
<lang julia>lists = [
[3,4,34,25,9,12,36,56,36], [2,8,81,169,34,55,76,49,7], [75,121,75,144,35,16,46,35]
]
squares = reduce(vcat, [[s for s in list if isqrt(s)^2 == s] for list in lists]) sort!(squares) println(squares) </lang>
Raku
<lang perl6>my $s = cache sort ( my $l = ( cache flat
[3,4,34,25,9,12,36,56,36], [2,8,81,169,34,55,76,49,7], [75,121,75,144,35,16,46,35]
)).grep: * ∈ cache {$++²}…*>$l.max;
put 'Added - Sorted'; put ' ' ~ $s.sum ~ ' ' ~ $s.gist;</lang>
Added - Sorted 690 (4 9 16 25 36 36 49 81 121 144 169)
Ring
<lang ring> load "stdlib.ring"
see "working..." + nl list = list(3) list[1] = [3,4,34,25,9,12,36,56,36] list[2] = [2,8,81,169,34,55,76,49,7] list[3] = [75,121,75,144,35,16,46,35] Primes = []
for n = 1 to 3
for m = 1 to len(list[n]) if issquare(list[n][m]) add(Primes,list[n][m]) ok next
next
Primes = sort(Primes) showArray(Primes)
see nl + "done..." + nl
func issquare(x)
for n = 1 to sqrt(x) if x = pow(n,2) return 1 ok next return 0
func showArray(array)
txt = "" see "[" for n = 1 to len(array) txt = txt + array[n] + "," next txt = left(txt,len(txt)-1) txt = txt + "]" see txt
</lang>
- Output:
working... [4,9,16,25,36,36,49,81,121,144,169] done...
Wren
<lang ecmascript>var lists = [
[3,4,34,25,9,12,36,56,36], [2,8,81,169,34,55,76,49,7], [75,121,75,144,35,16,46,35]
]
var squares = [] for (list in lists) {
for (e in list) { var s = e.sqrt.floor if (s * s == e) squares.add(e) }
} squares.sort() System.print(squares)</lang>
- Output:
[4, 9, 16, 25, 36, 36, 49, 81, 121, 144, 169]