From 5a0d8dec203f79edbeda95857a0c59d668068974 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Sat, 18 Nov 2023 00:12:05 +0800 Subject: [PATCH] :zap: add to_num & to_char in std.string --- doc/benchmark.md | 15 +++++---------- std/lib.nas | 1 - std/string.nas | 31 ++++++++++++++++++++++++++++++- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/doc/benchmark.md b/doc/benchmark.md index 6c3d3be..763a1fa 100644 --- a/doc/benchmark.md +++ b/doc/benchmark.md @@ -111,14 +111,9 @@ In 2022/2/17 update we added `\e` into the lexer. And the `bfcolored.nas` uses t ![mandelbrot](../doc/pic/mandelbrot.png) -## More nasal generated pictures +## More Nasal Generated Pictures -![mandelbrotset](../doc/pic/mandelbrotset.png) - -![mandelbrotset_reverse](../doc/pic/mandelbrotset_reverse.png) - -![burningship](../doc/pic/burningship.png) - -![burningship_reverse](../doc/pic/burningship_reverse.png) - -![feigenbaum](../doc/pic/feigenbaum.png) +|Mandelbrot Set|Mandelbrot Set|Burning Ship|Burning Ship|Feigenbaum| +|:----:|:----:|:----:|:----:|:----:| +|[mandelbrotset.nas](../test/mandelbrotset.nas)|[mandelbrotset.nas](../test/mandelbrotset.nas)|[burningship.nas](../test/burningship.nas)|[burningship.nas](../test/burningship.nas)|[feigenbaum.nas](../test/feigenbaum.nas)| +|![mandelbrotset](../doc/pic/mandelbrotset.png)|![mandelbrotset_reverse](../doc/pic/mandelbrotset_reverse.png)|![burningship](../doc/pic/burningship.png)|![burningship_reverse](../doc/pic/burningship_reverse.png)|![feigenbaum](../doc/pic/feigenbaum.png)| diff --git a/std/lib.nas b/std/lib.nas index 09b4680..fcf4139 100644 --- a/std/lib.nas +++ b/std/lib.nas @@ -1,7 +1,6 @@ # lib.nas # 2019 ValKmjolnir use std.math; -use std.string; use std.io; use std.os; use std.unix; diff --git a/std/string.nas b/std/string.nas index bed819f..10aac2c 100644 --- a/std/string.nas +++ b/std/string.nas @@ -9,4 +9,33 @@ var join = func(sep, vec) { res ~= (i==len-1? "":sep); } return res; -} \ No newline at end of file +} + +var __temp_char = func(number) { + return __char(number); +} + +var __temp_append = func(vec, elem...) { + return __append(vec, elem); +} + +var __temp_contains = func(hash, key) { + return __contains(hash, key); +} + +var __num_to_char = []; +var __char_to_num = {}; +func() { + for(var i = 0; i<256; i += 1) { + __temp_append(__num_to_char, __temp_char(i)); + __char_to_num[__temp_char(i)] = i; + } +}(); + +var to_char = func(number) { + return 0<=number and number<256? __num_to_char[number]:""; +} + +var to_num = func(character) { + return __temp_contains(__char_to_num, character)? __char_to_num[character]:-1; +}