Compilador online
Compilador Zig online
Escribe tu código en Zig 0.17 aquí abajo y ejecútalo gratis, con entrada, en un sandbox en nuestros servidores. Sin registro y sin anuncios.
Por el equipo de OnlineCompiler.io. Actualizado el .
Also in EnglishTambém em português
const std = @import("std");
pub fn main(init: std.process.Init) !void {
var in_buf: [256]u8 = undefined;
var stdin = std.Io.File.reader(.stdin(), init.io, &in_buf);
var out_buf: [256]u8 = undefined;
var stdout = std.Io.File.writer(.stdout(), init.io, &out_buf);
// Lee el nombre y un número de la pestaña Entrada
const nombre = (try stdin.interface.takeDelimiter('\n')) orelse "";
try stdout.interface.print("¡Hola, {s}!\n", .{nombre});
const linea = (try stdin.interface.takeDelimiter('\n')) orelse "";
const n = try std.fmt.parseInt(usize, linea, 10);
for (1..n + 1) |i| {
try stdout.interface.print("{d} al cuadrado es {d}\n", .{ i, i * i });
}
try stdout.interface.flush();
} Lucía 5
¿Quieres revisar una solución contra varias entradas? El compilador Zig con casos de prueba las ejecuta todas a la vez y marca cada una como aprobada o reprobada.
Cómo dar la entrada (stdin)
Antes de presionar Ejecutar, escribe en la pestaña Entrada todo lo que el programa va a leer. El programa recibe ese texto por la entrada estándar (stdin). En Zig se ve así:
const linea = (try stdin.interface.takeDelimiter('\n')) orelse ""; // la siguiente línea, sin el \n
const n = try std.fmt.parseInt(i64, linea, 10); // la línea como número
var partes = std.mem.tokenizeScalar(u8, linea, ' '); // o dividida en los espacios,
const a = try std.fmt.parseInt(i64, partes.next().?, 10); // un número a la vez La entrada completa se envía cuando presionas Ejecutar, así que el programa no puede pedir nada más mientras corre. Pon cada valor en una línea, o sepáralos con espacios, según cómo los lea el programa.
Versión y límites
| Versión | Zig 0.17 |
|---|---|
| Se compila con | zig build-exe -j2 -target x86_64-linux code.zig -femit-bin=code.out |
| Se ejecuta con | ./code.out |
| Límites | 30 segundos, 512 MB de memoria, 2 CPU, 64 KB de salida por flujo, sin red |
| Ejecución típica | 3.99 s, y 4.45 s para la más lenta de cada 20 (cómo lo medimos, en inglés) |
Lo que conviene saber
- Compila en modo Debug, así que las comprobaciones de seguridad siguen activas: un índice fuera de los límites o un desbordamiento de entero provoca un panic con un stack trace que señala la línea.
- La E/S de Zig 0.17 es nueva:
mainrecibeinit: std.process.Init, y stdin y stdout sonstd.Io.File.reader(.stdin(), init.io, &buf)ystd.Io.File.writer(.stdout(), init.io, &buf). Llama alflushdel writer antes de quemaintermine, o la salida se pierde. - Una ejecución tarda unos 4 segundos, la mayor parte compilando, así que incluso un programa corto tarda eso.
Ejecutar Zig desde tu app
Para ejecutar Zig desde tu propia app, envía el código y la entrada al endpoint síncrono con una clave de API, y la salida vuelve en la respuesta. Es gratis hasta 100,000 ejecuciones al mes. Documentación de la API (en inglés).
El editor de arriba es un widget que puedes poner en tu sitio, blog o curso. Con el atributo data-locale="es", los botones aparecen en español. Cómo insertar el editor (en inglés).
Otras páginas
- Esta página en inglés
- Esta página en portugués
- Otros compiladores en español: Python, C, C++, Java, C#, F#, Go, Rust, PHP, Ruby, Haskell, TypeScript, JavaScript, SQL, DuckDB, Bash, Fortran, Visual Basic, Kotlin, R, Swift, COBOL, Perl, Julia, Pascal, Octave, Assembly, Lua, OCaml, Common Lisp, Erlang, Elixir, Prolog, D, FreeBASIC, Dart, Clojure, Groovy, Scala, Nim, Crystal, Ada, PowerShell, Racket, Objective-C.
- Los 46 lenguajes, con versiones y tiempos de ejecución
Preguntas frecuentes
¿El compilador Zig online es gratis?
Sí. Ejecutar Zig en esta página no requiere cuenta y no tiene anuncios. Para ejecutar Zig desde tu propia app o sitio, la API y el widget son gratis hasta 100,000 ejecuciones al mes, uso comercial incluido.
¿Mi programa en Zig puede leer entrada?
Sí. Escribe la entrada en la pestaña Entrada antes de ejecutar, y el programa la lee por la entrada estándar (stdin). La entrada completa se envía cuando presionas Ejecutar, así que el programa no puede pedir nada más mientras corre.
¿Puedo usar bibliotecas en Zig?
La biblioteca estándar de Zig; reserva memoria con init.gpa o init.arena. Zig 0.17 no tiene @cImport, así que no se pueden usar bibliotecas de C. No hay gestor de paquetes, y los programas no tienen acceso a la red.
¿Cuánto tiempo puede correr un programa?
Hasta 30 segundos, con 512 MB de memoria y 2 CPU. Un programa que sigue corriendo a los 30 segundos se detiene con el código de salida 124, y la salida de más de 64 KB por flujo se corta.
¿Dónde se ejecuta mi código?
En nuestros servidores, en un sandbox gVisor nuevo y sin acceso a la red, que se borra cuando termina la ejecución. Cada ejecución se guarda en el historial con su salida; la página de seguridad (en inglés) explica qué se almacena.
¿Hay una API para Zig?
Sí. Envía el código, el id del compilador zig-0.17 y la entrada a https://api.onlinecompiler.io/api/run-code-sync/ con una clave de API, y la respuesta trae la salida, los errores, el código de salida, el tiempo y la memoria. Es gratis hasta 100,000 ejecuciones al mes, y la misma clave sirve para los otros 45 lenguajes. La documentación está en inglés.