typestar

Aritmética entera en WebAssembly

Sin operadores, solo instrucciones — y la división declara su signo.

(module
  ;; Integer division and remainder come signed and unsigned; the
  ;; suffix picks. There is no operator syntax, only instructions.
  (func (export "split_coins") (param $coins i32) (param $ways i32)
        (result i32)
    (i32.div_s (local.get $coins) (local.get $ways)))

  (func (export "left_over") (param $coins i32) (param $ways i32)
        (result i32)
    (i32.rem_s (local.get $coins) (local.get $ways)))

  (func (export "double_less_one") (param $n i32) (result i32)
    (i32.sub (i32.mul (local.get $n) (i32.const 2)) (i32.const 1))))

Cómo funciona

  1. i32.div_s divide con signo; _u leería los bits sin signo.
  2. i32.rem_s es el resto que hace juego.
  3. La matemática compuesta anida llamadas plegadas: multiplica y resta.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
13
Caracteres a escribir
520
Tokens
109
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 101 segundos.

Escribe este fragmento

Paso 1 de 3 en Números; paso 4 de 28 en Fundamentos del lenguaje.

← Anterior Siguiente →