Raspberry BASIC > Programming Challenges
SALC Ubuntu 64
AIR:
I reworked the FreeBasic submission, and ran it on my Ubuntu PI4:
--- Code: FreeBasic ---' FreeBasic - 1mil3.bas DIM SHARED a(1000001) AS INTEGER function Reverse( byref source as string ) as string dim as integer first = 0, last = Len(source)-1 while( first < last ) Swap source[first], source[last] first += 1 : last -= 1 wend return sourceend function sub mil() dim as string s,t,r dim as integer x,c FOR x = 1 TO 1000000 c = (x - 1) MOD 26 s &= CHR(c + 65) a(x) = x IF c = 25 THEN t &= s s = "" c = 0 ENDIF NEXT r = Reverse(t) PRINT "r LEN: " & LEN(r) PRINT "Front: " & LEFT(r, 26) PRINT "Back: " & RIGHT(r, 26) PRINT "UBVal: " & a(1000000)end sub mil()
riveraa@dpi:~/tmp$ timex ./1mil3
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back: ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.16user 0.02system 0:00.18elapsed 98%CPU (0avgtext+0avgdata 11596maxresident)k
0inputs+0outputs (0major+2623minor)pagefaults 0swaps
AIR.
EDIT: Cleaned up code.
John Spikowski:
I need to build ScriptBasic on this Ubuntu 64 RPi 4B.
John Spikowski:
I think a round 4 is in order but this time running on Ubuntu 64 on the RPi 4B 4GB.
John Spikowski:
ScriptBasic (Ubuntu 64 RPi 4B 4GB)
--- Code: Script BASIC ---' ScriptBasic - 1mil4.sb OPEN "t_file" FOR OUTPUT AS #1 s = ""SPLITA STRING(1000001,"0") BY "" TO a FOR x = 1 TO 1000000 s &= CHR(((x - 1) % 26) + 65) a[x] = x IF LEN(s) = 26 THEN PRINT #1, s s = "" END IFNEXTCLOSE(1) flen = FILELEN("t_file")OPEN "t_file" FOR INPUT AS #1t = INPUT(flen, 1)CLOSE(1)t = STRREVERSE(t) PRINT "t LEN: ",LEN(t),"\n"PRINT "Front: ",LEFT(t, 26),"\n"PRINT "Back: ",RIGHT(t, 26),"\n"PRINT "UBVal: ",a[1000000],"\n"
ubuntu@rpi4b:~/sbrt/examples$ timex scriba 1mil4.sb
t LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back: ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
6.60user 0.79system 0:07.42elapsed 99%CPU (0avgtext+0avgdata 277268maxresident)k
0inputs+1960outputs (0major+69241minor)pagefaults 0swaps
ubuntu@rpi4b:~/sbrt/examples$
No big improvement with ScriptBasic under 64 bit on the RPi 4B. Everything built fine using the Linux dependency list.
John Spikowski:
C (Ubuntu 64 RPi 4B 4GB)
--- Code: C ---// C - 1mil4.c - AIR #include <stdlib.h>#include <stdio.h>#include <glib.h>#include <glib/gprintf.h> int main(int argc, char **argv) { GString *s = g_string_new(NULL); GString *t = g_string_new(NULL); int a[1000001] = {0}; for (int x = 0; x < 1000001; x++) { a[x] = x; g_string_append_c(s,(char)(x%26)+65); if (s->len == 26) { g_string_append(t,g_strreverse(s->str)); g_string_assign(s,""); } } g_printf("r LEN: %d\n",t->len); g_printf("Front: %.*s\n", 26, t->str); g_printf("Back: %s\n", t->str + t->len - 26); g_printf("UBVal: %d\n",a[1000000]); g_string_free (s,TRUE); g_string_free (t,TRUE);}
ubuntu@rpi4b:~/salc/c$ gcc -O3 1mil4.c $(pkg-config --libs --cflags glib-2.0) -o 1mil4
1mil4.c: In function ‘main’:
1mil4.c:22:27: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘gsize’ {aka ‘long unsigned int’} [-Wformat=]
22 | g_printf("r LEN: %d\n",t->len);
| ~^ ~~~~~~
| | |
| int gsize {aka long unsigned int}
| %ld
ubuntu@rpi4b:~/salc/c$ ls -l 1mil4
-rwxr-xr-x 1 ubuntu ubuntu 13704 Dec 15 16:03 1mil4
ubuntu@rpi4b:~/salc/c$ timex ./1mil4
r LEN: 999986
Front: ZYXWVUTSRQPONMLKJIHGFEDCBA
Back: ZYXWVUTSRQPONMLKJIHGFEDCBA
UBVal: 1000000
0.01user 0.01system 0:00.03elapsed 93%CPU (0avgtext+0avgdata 6576maxresident)k
0inputs+0outputs (0major+1352minor)pagefaults 0swaps
ubuntu@rpi4b:~/salc/c$
Navigation
[0] Message Index
[#] Next page
Go to full version