1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | class String def to_sci num = self num += '.0' unless num.include?('.') negative = num.slice!(0) if num[0] == '-' negative ||= false num.prepend('0') if num[0] == '.' raise "Must be a non-zero number I can turn into scientific notation" unless num.delete('1234567890-') == '.' && num =~ /\A(0[\.].*[1-9]|[1-9])/ e = num.match(/((?<=0[\.])0*[1-9]|(?<=[1-9])\d*(?=[\.]))/)[0].length.to_s simple = num.delete('.').scan(/[1-9]\d*(?=0*)/)[0].insert(1,'.') simple.prepend('-') if negative #if the number's negative, add the proper sign e.prepend('-') if num =~ /\A-?0/ #it's negative sci-notation, so add a sign =) return "#{simple} x 10^#{e}" end end input = '' num = (rand(1509290) / rand(100).to_f).to_s num = input if input != '' puts "#{num}: #{num.to_sci}" |
Y2xhc3MgU3RyaW5nCiAgICBkZWYgdG9fc2NpCiAgICAgICAgbnVtID0gc2VsZgogICAgICAgIG51bSArPSAnLjAnIHVubGVzcyBudW0uaW5jbHVkZT8oJy4nKQogICAgICAgIG5lZ2F0aXZlID0gbnVtLnNsaWNlISgwKSBpZiBudW1bMF0gPT0gJy0nCiAgICAgICAgbmVnYXRpdmUgfHw9IGZhbHNlCiAgICAgICAgbnVtLnByZXBlbmQoJzAnKSBpZiBudW1bMF0gPT0gJy4nCiAgICAgICAgcmFpc2UgIk11c3QgYmUgYSBub24temVybyBudW1iZXIgSSBjYW4gdHVybiBpbnRvIHNjaWVudGlmaWMgbm90YXRpb24iIHVubGVzcyBudW0uZGVsZXRlKCcxMjM0NTY3ODkwLScpID09ICcuJyAmJiBudW0gPX4gL1xBKDBbXC5dLipbMS05XXxbMS05XSkvCiAgICAgICAgZSA9IG51bS5tYXRjaCgvKCg/PD0wW1wuXSkwKlsxLTldfCg/PD1bMS05XSlcZCooPz1bXC5dKSkvKVswXS5sZW5ndGgudG9fcwogICAgICAgIHNpbXBsZSA9IG51bS5kZWxldGUoJy4nKS5zY2FuKC9bMS05XVxkKig/PTAqKS8pWzBdLmluc2VydCgxLCcuJykKICAgICAgICBzaW1wbGUucHJlcGVuZCgnLScpIGlmIG5lZ2F0aXZlICNpZiB0aGUgbnVtYmVyJ3MgbmVnYXRpdmUsIGFkZCB0aGUgcHJvcGVyIHNpZ24KICAgICAgICBlLnByZXBlbmQoJy0nKSBpZiBudW0gPX4gL1xBLT8wLyAjaXQncyBuZWdhdGl2ZSBzY2ktbm90YXRpb24sIHNvIGFkZCBhIHNpZ24gPSkKICAgICAgICByZXR1cm4gIiN7c2ltcGxlfSB4IDEwXiN7ZX0iCiAgICBlbmQKZW5kCmlucHV0ID0gJycKICAgIG51bSA9IChyYW5kKDE1MDkyOTApIC8gcmFuZCgxMDApLnRvX2YpLnRvX3MKICAgIG51bSA9IGlucHV0IGlmIGlucHV0ICE9ICcnCiAgICBwdXRzICIje251bX06ICN7bnVtLnRvX3NjaX0iICAgIA==
-
upload with new input
-
result: Success time: 0.01s memory: 4760 kB returned value: 0
3525.1935483870966: 3.5251935483870966 x 10^3
-
result: Success time: 0s memory: 4716 kB returned value: 0
11609.938461538462: 1.1609938461538462 x 10^4


