Raspberry BASIC

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - John Spikowski

Pages: 1 ... 6 7 [8] 9 10 ... 16
106
Programming Challenges / Re: SALC Ubuntu 64
« on: December 21, 2019, 04:35:48 AM »
8th (Ubuntu 64 RPi 4B 4GB)

Code: Text
  1. 1000000 constant LIMIT
  2.  
  3. a:new 0 a:push var, a
  4. 0 b:new true b:writable var, s
  5. 0 b:new true b:writable var, t
  6.  
  7.  
  8. : iterate
  9.   s @ "" 2 pick n:1- 26 n:mod 65 n:+ s:+ b:append
  10.   b:len 26 n:< not if
  11.     t @ swap b:append drop
  12.     0 b:new true b:writable s !
  13.   else
  14.     drop
  15.   then
  16.   a:push ;
  17.  
  18. : app:main
  19.   a @ ' iterate 1 LIMIT loop
  20.   t @ b:rev >s s:len "r LEN: %d\n" s:strfmt .
  21.   dup 26 s:lsub "Front: %s\n" s:strfmt .
  22.   26 s:rsub "Back:  %s\n" s:strfmt .
  23.   LIMIT a:@ nip "UBVal: %d\n" s:strfmt .
  24.   bye ;
  25.  


ubuntu@rpi4b:~/salc/8th-dev$ timex ./1mil4
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
1.00user 0.10system 0:01.12elapsed 98%CPU (0avgtext+0avgdata 66508maxresident)k
0inputs+0outputs (0major+15444minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/8th-dev$


107
Programming Challenges / Re: SALC Ubuntu 64
« on: December 19, 2019, 10:29:19 PM »
GO (Ubuntu 64 RPi 4B 4GB)

Code: Go
  1. // GO - 1mil4.go - AIR
  2.  
  3. package main
  4.  
  5. import (
  6.     "fmt"
  7.     "strings"
  8. )
  9.  
  10. // Reverse returns its argument string reversed rune-wise left to right.
  11. // From: https://github.com/golang/example/blob/master/stringutil/reverse.go
  12. func Reverse(s string) string {
  13.     r := []rune(s)
  14.     for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
  15.         r[i], r[j] = r[j], r[i]
  16.     }
  17.     return string(r)
  18. }
  19.  
  20. func main() {
  21.     var s strings.Builder
  22.     var r = ""
  23.     var t strings.Builder
  24.     var a [1000001]int
  25.  
  26.     for x := 0; x < 1000001; x++ {
  27.         a[x] = x
  28.  
  29.         s.WriteByte(byte((x % 26) + 65))
  30.  
  31.         if s.Len() == 26 {
  32.             t.WriteString(s.String())
  33.             s.Reset()
  34.         }
  35.     }
  36.  
  37.     r = Reverse(t.String())
  38.  
  39.     fmt.Println("r LEN: ", len(r))
  40.     fmt.Println("Front: ", r[0:26])
  41.     fmt.Println("Back:  ", r[len(r)-26:])
  42.     fmt.Println("UBVal: ", a[1000000])
  43.  
  44. }
  45.  


ubuntu@rpi4b:~/salc/go-dev$ go build 1mil4.go
ubuntu@rpi4b:~/salc/go-dev$ ls -l
total 1932
-rwxr-xr-x 1 ubuntu ubuntu 2123629 Dec 19 14:26 1mil4
-rw-r--r-- 1 ubuntu ubuntu     887 Dec 19 14:25 1mil4.go
ubuntu@rpi4b:~/salc/go-dev$ timex ./1mil4
r LEN:  999986
Front:  ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:   ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal:  1000000
0.11user 0.02system 0:00.12elapsed 109%CPU (0avgtext+0avgdata 19272maxresident)k
0inputs+0outputs (0major+4599minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/go-dev$


108
Programming Challenges / Re: SALC Ubuntu 64
« on: December 19, 2019, 08:36:36 AM »
JADE C++ (Ubuntu 64 RPi 4B 4GB)

Code: C++
  1. #include <jade.hpp>
  2.  
  3. MAIN
  4.     STRING s,t,r;
  5.     ARRAY<int> a;
  6.  
  7.     FOR( VAR x = 0 TO x<1000001 STEP x++ ) DO
  8.         a.push_back(x);
  9.         s += (CHAR)(x%26)+65;
  10.  
  11.         IF ( LEN(s) == 26 ) THEN
  12.             t += s;
  13.             s = "";
  14.         END
  15.     END
  16.  
  17.     r = REVERSE$(t);
  18.  
  19.     PRINT("r LEN: ",LEN(t));
  20.     PRINT("Front: ", LEFT$(r,26));
  21.     PRINT("Back:  ", RIGHT$(r,26));
  22.     PRINT("UBVal: ",a[1000000]);
  23. END
  24.  


riveraa@rpi:~/Projects/jade$ timex ./mil64
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.05user 0.01system 0:00.07elapsed 98%CPU (0avgtext+0avgdata 10136maxresident)k
0inputs+0outputs (0major+3069minor)pagefaults 0swaps


109
Programming Challenges / Re: SALC Ubuntu 64
« on: December 18, 2019, 04:07:10 AM »
Nim 1,1,1 (Ubuntu 64 RPi 4B 4GB)

Code: Text
  1. # Nim 1.1.1 - onemil4.nim
  2.  
  3. proc reverse*(str: string): string =
  4.   result = ""
  5.   for index in countdown(str.high, 0):
  6.     result.add(str[index])
  7.  
  8. type
  9.     milarray = array[1000001, int]
  10.  
  11. var
  12.     s = ""
  13.     t = ""
  14.     r:string
  15.     a:milarray
  16.  
  17. for x in 0..1000000:
  18.     a[x] = x
  19.  
  20.     s &= chr((x mod 26) + 65)
  21.  
  22.     if s.len == 26:
  23.         t &= s
  24.         s = ""
  25.  
  26.  
  27. r = t.reverse
  28. echo "r Len: ",r.len
  29. echo "Front: ",r[0..25]
  30. echo "Back:  ",r[r.len-26..r.len-1]
  31. echo "UBVal: ",a[1000000]
  32.  


ubuntu@rpi4b:~/salc/nim-dev$ timex ./onemil4
r Len: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.04user 0.03system 0:00.07elapsed 98%CPU (0avgtext+0avgdata 14136maxresident)k
0inputs+0outputs (0major+3290minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/nim-dev$


110
Nim / Re: Nim Introduction
« on: December 18, 2019, 03:02:08 AM »
Ubuntu wanted to install an older version of Nim via Synaptic. I thought I would give compiling it from source on the RPi 4B under Ubuntu 64 a try.


Hint: operation successful (121335 lines compiled; 46.147 sec total; 139.008MiB peakmem; Release Build) [SuccessX]

ubuntu@rpi4b:~/repo/Nim/bin$ nim --version
Nim Compiler Version 1.1.1 [Linux: arm64]
Compiled at 2019-12-18
Copyright (c) 2006-2019 by Andreas Rumpf

git hash: f9f55a23bbcb64824954ed83b60816499a7cc338
active boot switches: -d:release
ubuntu@rpi4b:~/repo/Nim/bin$



111
Programming Challenges / Re: SALC Ubuntu 64
« on: December 17, 2019, 05:15:02 AM »
I split the topic into 4  groups

  • Just REM
  • One Mil Dash
  • SALC (String Array Language Challenge) Rasbain 32 bit on the RPi 4B 4GB
  • SALC Ubuntu 64 bit on the RPi 4B 4GB

A fifth round might be each language has to create a simple GUI. (not a popup message box) Maybe a login dialog.

112
Programming Challenges / Re: SALC Ubuntu 64
« on: December 17, 2019, 03:36:12 AM »
JavaScript (Ubuntu 64 RPi 4B 4GB)

Code: Javascript
  1. // JavaScript - 1mil4.js
  2.  
  3. function reverseString(str){
  4.     let strn ="";
  5.     for(let char of str){
  6.         strn = char + strn;
  7.     }
  8.     return strn;
  9. }
  10.  
  11. var s = "";
  12. var t = "";
  13. var a = [1000001];
  14.  
  15. for (x = 1; x <= 1000000; x++) {
  16.   s += String.fromCharCode(((x - 1) % 26) + 65);
  17.   a[x] = x;
  18.   if(s.length == 26) {
  19.         t += s;
  20.         s = "";
  21.   }
  22. }
  23.  
  24. r = reverseString(t);
  25.  
  26. console.log("r LEN: " + r.length);
  27. console.log("Front: " + r.substring(0, 26));
  28. console.log("Back:  " + r.substring(-0, 26));
  29. console.log("UBVal: " + a[1000000]);
  30.  


ubuntu@rpi4b:~/salc/javascript-dev$ timex node 1mil4.js
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.97user 0.21system 0:01.20elapsed 98%CPU (0avgtext+0avgdata 118448maxresident)k
88inputs+0outputs (1major+27106minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/javascript-dev$


113
Programming Challenges / Re: SALC Ubuntu 64
« on: December 17, 2019, 03:16:42 AM »
Java (Ubuntu 64 RPi 4B 4GB)

Code: Java
  1. // Java - 1mil4.java
  2.  
  3. class onemil4
  4.   {
  5.   public static void main(String args[])
  6.   {
  7.   StringBuilder s = new StringBuilder();
  8.   StringBuilder t = new StringBuilder();
  9.   int c = 0;
  10.   int[] a = new int[1000001];
  11.  
  12.   for (int x = 1; x <= 1000000; x++) {
  13.     c = ((x - 1) % 26) + 65;          
  14.     s.append((char) c);
  15.     a[x] = x;
  16.     if(s.length() == 26) {
  17.       t.append(s);
  18.       s.delete(0, s.length());
  19.     }
  20.   }
  21.  
  22.   StringBuilder r = new StringBuilder();
  23.   r.append(t);
  24.   r = r.reverse();
  25.  
  26.   System.out.println("r LEN: " + r.length());
  27.   System.out.println("Front: " + r.substring(0, 26));
  28.   System.out.println("Back:  " + r.substring(r.length() - 26));  
  29.   System.out.println("UBVal: " + a[1000000]);
  30.   }
  31. }
  32.  


ubuntu@rpi4b:~/salc/java-dev$ javac 1mil4.java
ubuntu@rpi4b:~/salc/java-dev$ timex java onemil4
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.83user 0.11system 0:00.68elapsed 137%CPU (0avgtext+0avgdata 38428maxresident)k
0inputs+64outputs (0major+6134minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/java-dev$


114
General Discussion / Re: Ubuntu 64 RPI 4B
« on: December 16, 2019, 05:55:22 PM »
If you own a RPi 4B 4GB, time to upgrade to a commercial grade OS. Ubuntu stole the RPi OS show.

115
Programming Challenges / Re: SALC Ubuntu 64
« on: December 16, 2019, 05:40:21 AM »
Thanks!

BaCon post updated.

116
Programming Challenges / Re: SALC Ubuntu 64
« on: December 16, 2019, 05:04:24 AM »
PHP (Ubuntu 64 RPi 4B 4GB)

Code: PHP
  1. <?php
  2.  
  3. # PHP -1mil4.php
  4.  
  5. $s = "";
  6. $t = "";
  7. $a = array();
  8.  
  9. for ($x = 1; $x <= 1000000; $x++) {
  10.   $s .= chr((($x - 1) % 26) + 65);
  11.   $a[$x] = $x;
  12.   if(strlen($s) == 26) {
  13.     $t .= $s;
  14.     $s = "";
  15.   }
  16. }
  17.  
  18. $r = strrev($t);
  19.  
  20. echo "r LEN: ", strlen($r), "\n";
  21. echo "Front: ", substr($r, 0, 26), "\n";
  22. echo "Back:  ", substr($r, -26), "\n";
  23. echo "UBVal: ", $a[1000000],"\n";
  24.  
  25. ?>
  26.  


ubuntu@rpi4b:~/salc/php-dev$ timex php 1mil4.php
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000

0.31user 0.10system 0:00.41elapsed 99%CPU (0avgtext+0avgdata 48284maxresident)k
0inputs+0outputs (0major+16200minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/php-dev$


I think many overlook PHP as a fast console scripting language.

117
Programming Challenges / Re: SALC Ubuntu 64
« on: December 16, 2019, 03:18:57 AM »
Swift (Ubuntu 64 RPi 4B 4GB)

Code: Text
  1. // Swift 5.1.2 ARM 64- 1mil4.swift
  2.  
  3. var s = ""
  4. var t = ""
  5. var a = [Int](repeating: 0, count: 1000001)
  6.  
  7. for x in 1...1000000 {
  8.   let c = (x - 1) % 26
  9.   s.append(String(UnicodeScalar(UInt8(c + 65))))
  10.   a[x] = x
  11.   if c == 25 {
  12.     t.append(String(s.reversed()))
  13.     s = ""
  14.   }
  15. }
  16.  
  17. print("t LEN: ", t.count)
  18. print("Front: \(t.prefix(26))")
  19. print("Back:  \(t.suffix(26))")
  20. print("UBVal: ", a[1000000])
  21.  


ubuntu@rpi4b:~/salc/swift-dev$ swiftc -O 1mil4.swift
ubuntu@rpi4b:~/salc/swift-dev$ ls -l main
-rwxr-xr-x 1 ubuntu ubuntu 74600 Dec 15 19:13 main
ubuntu@rpi4b:~/salc/swift-dev$ timex ./main
t LEN:  999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal:  1000000
0.65user 0.02system 0:00.69elapsed 98%CPU (0avgtext+0avgdata 16392maxresident)k
0inputs+0outputs (0major+2811minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/swift-dev$


Major improvement for Swift on ARM 64. My guess is that the reason Swift runs like a pig on Rasbian is that Swift depends on the OS compilers rather than using the ones included with the language build like other platforms.

118
Programming Challenges / Re: SALC Ubuntu 64
« on: December 16, 2019, 02:53:54 AM »
BaCon (Ubuntu 64 RPi 4B 4GB)

Code: Text
  1. ' BaCon - 1mil4.bac - AIR
  2.  
  3. OPTION PARSE FALSE
  4.  
  5. s$ = ""
  6. t$ = ""
  7.  
  8. DECLARE a[1000001] TYPE NUMBER
  9. DECLARE len TYPE size_t
  10. DECLARE *stream TYPE FILE
  11.  
  12. stream = open_memstream(&t$,&len)
  13.  
  14. FOR x = 1 TO 1000000
  15.   s$ = s$ & CHR$(MOD((x - 1), 26) + 65)
  16.   a[x] = x
  17.   IF LEN(s$) = 26 THEN
  18.     fprintf(stream, "%s", s$)
  19.     s$ = ""
  20.   END IF
  21. NEXT
  22. CLOSE FILE stream
  23.  
  24. r$ = REVERSE$(t$)
  25. FREE t$
  26. PRINT "r LEN: ",len
  27. PRINT "Front: ",LEFT$(r$, 26)
  28. PRINT "Back:  ",RIGHT$(r$, 26)
  29. PRINT "UBVal: ",a[1000000]
  30.  


ubuntu@rpi4b:~/salc/bacon-dev$ bacon 1mil4.bac
WARNING: 7 temporary files found! Do you want to delete them ([y]/n)? y
Temporary files were deleted.
Converting '1mil4.bac'... done, 31 lines were processed in 0.034 seconds.
Compiling '1mil4.bac'... cc  -c 1mil4.bac.c
cc -o 1mil4 1mil4.bac.o -lbacon -L. -lm 
Done, program '1mil4' ready.
ubuntu@rpi4b:~/salc/bacon-dev$ ls -l 1mil4
-rwxr-xr-x 1 ubuntu ubuntu 133856 Dec 15 21:37 1mil4
ubuntu@rpi4b:~/salc/bacon-dev$ timex ./1mil4
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.38user 0.01system 0:00.40elapsed 99%CPU (0avgtext+0avgdata 12096maxresident)k
0inputs+0outputs (0major+3059minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/bacon-dev$


119
Programming Challenges / Re: SALC Ubuntu 64
« on: December 16, 2019, 01:26:14 AM »
Perl (Ubuntu 64 RPi 4B 4GB)

Code: Perl
  1. # Perl - 1mil4.pl
  2.  
  3. my $s = "";
  4. my $t = "";
  5. my $a = [1000000];
  6.  
  7. for (my $x = 1; $x <= 1000000; $x++) {
  8.   $s = $s . chr((($x - 1) % 26) + 65);
  9.   $a[$x] = $x;
  10.   if (length($s) == 26) {
  11.     $t = $t . $s;
  12.     $s = "";
  13.   }
  14. }
  15.  
  16.  
  17. my $r = scalar reverse $t;
  18.  
  19. printf("r LEN: %d\n", length($r));
  20. printf("Front: %s\n", substr($r, 0, 26));
  21. printf("Back:  %s\n", substr($r, -26));
  22. printf("UBVal: %d\n", $a[1000000]);
  23.  


ubuntu@rpi4b:~/salc/perl-dev$ timex perl 1mil4.pl
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.85user 0.04system 0:00.90elapsed 99%CPU (0avgtext+0avgdata 38688maxresident)k
0inputs+0outputs (0major+8869minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/perl-dev$


120
Programming Challenges / Re: SALC Ubuntu 64
« on: December 16, 2019, 01:07:08 AM »
Ruby (Ubuntu 64 RPi 4B 4GB)

Code: Ruby
  1. # Ruby - 1mil4.rb - AIR
  2.  
  3. a = [10000001]
  4. s = ""
  5. t = ""
  6.  
  7.  
  8. (0..1000001).each do |x|
  9.         a << x+1
  10.         s << (x%26)+65
  11.         if s.length == 26
  12.                 t << s.reverse
  13.                 s.clear
  14.         end
  15. end
  16.  
  17. puts "t LEN: #{t.length}"
  18. puts "Front: #{t[0,26]}"
  19. puts "Back:  #{t[-26,26]}"
  20. puts "UBVal: #{a[1000000]}"
  21.  


ubuntu@rpi4b:~/salc/ruby-dev$ timex ruby 1mil4.rb
t LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back:  ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.68user 0.08system 0:00.88elapsed 86%CPU (0avgtext+0avgdata 18092maxresident)k
2240inputs+0outputs (2major+3678minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/ruby-dev$



Pages: 1 ... 6 7 [8] 9 10 ... 16