Compilador online
Compilador Prolog online
Escreva seu código em Prolog (SWI-Prolog 10) abaixo e rode de graça, com entrada, num sandbox nos nossos servidores. Sem cadastro e sem anúncios.
Pela equipe do OnlineCompiler.io. Atualizado em .
Also in EnglishTambién en español
:- initialization(main).
main :-
% Lê o nome e um número da aba Entrada
read_line_to_string(user_input, Nome),
read_line_to_string(user_input, Linha),
number_string(N, Linha),
format("Olá, ~w!~n", [Nome]),
forall(between(1, N, I),
( Q is I * I,
format("~w ao quadrado é ~w~n", [I, Q]) )),
halt. Ana 5
Quer conferir uma solução contra várias entradas? O compilador Prolog com casos de teste roda todas de uma vez e marca cada uma como aprovada ou reprovada.
Como dar entrada (stdin)
Antes de apertar Executar, digite na aba Entrada tudo o que o programa vai ler. Ele recebe esse texto pela entrada padrão (stdin). Em Prolog, fica assim:
read_line_to_string(user_input, Nome), % uma linha inteira, como texto
read_line_to_string(user_input, Linha), % a próxima linha,
number_string(N, Linha), % convertida em número
read(X), % um termo que termina em ponto, como 42. A entrada inteira é enviada quando você aperta Executar, então o programa não pode pedir mais nada enquanto roda. Coloque cada valor numa linha, ou separe por espaços, conforme o programa lê.
Versão e limites
| Versão | Prolog SWI-Prolog 10 |
|---|---|
| Compilado com | Sem etapa separada: o comando de execução compila ou interpreta o código |
| Executado com | swipl -f /runcode/init.pl --on-error=status -q -t runcode_halt code.pl |
| Limites | 30 segundos, 512 MB de memória, 2 CPUs, 64 KB de saída por fluxo, sem rede |
| Execução típica | 0,62 s, e 0,7 s para a mais lenta em cada 20 (como medimos, em inglês) |
Bom saber
- Roda no SWI-Prolog 10. O programa roda a partir de uma diretiva
:- initialization(main)., como no GNU Prolog, e a execução termina quando ele acaba ou chamahalt. read_line_to_string(user_input, Linha)lê a próxima linha da aba Entrada;read(X)lê um termo, que precisa terminar com ponto final. Quando a entrada acaba,read_line_to_stringdevolve o átomoend_of_file.- Texto entre aspas duplas é uma string, como é no SWI-Prolog, e não uma lista de códigos como no GNU Prolog. Os avisos, como os de variáveis singleton, vão para o stderr; um erro, ou um
mainque falha, deixa o código de saída em 1.
Rodar Prolog a partir do seu app
Para rodar Prolog no seu próprio app, envie o código e a entrada para o endpoint síncrono com uma chave de API, e a saída volta na resposta. É grátis até 100.000 execuções por mês. Documentação da API (em inglês).
O editor acima é um widget que você pode colocar no seu site, blog ou curso. Com o atributo data-locale="pt", os botões aparecem em português. Como incorporar o editor (em inglês).
Outras páginas
- Esta página em inglês
- Esta página em espanhol
- Outros compiladores em português: 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, D, FreeBASIC, Dart, Clojure, Groovy, Scala, Zig, Nim, Crystal, Ada, PowerShell, Racket, Objective-C.
- Todas as 46 linguagens, com versões e tempos de execução
Perguntas frequentes
O compilador Prolog online é grátis?
Sim. Rodar Prolog nesta página não exige conta e não tem anúncios. Para rodar Prolog no seu próprio app ou site, a API e o widget são grátis até 100.000 execuções por mês, uso comercial incluído.
Meu programa em Prolog pode ler entrada?
Sim. Digite a entrada na aba Entrada antes de executar, e o programa a lê pela entrada padrão (stdin). A entrada inteira é enviada quando você aperta Executar, então o programa não pode pedir mais nada enquanto roda.
Posso usar bibliotecas em Prolog?
As bibliotecas que vêm com o SWI-Prolog, como lists, apply, readutil e clpfd. Pacotes (packs) não podem ser instalados, e os programas não têm acesso à rede.
Quanto tempo um programa pode rodar?
Até 30 segundos, com 512 MB de memória e 2 CPUs. Um programa que ainda estiver rodando aos 30 segundos é interrompido com o código de saída 124, e a saída acima de 64 KB por fluxo é cortada.
Onde meu código roda?
Nos nossos servidores, num sandbox gVisor novo e sem acesso à rede, que é apagado quando a execução termina. Cada execução fica guardada no histórico com a saída; a página de segurança (em inglês) explica o que é armazenado.
Existe uma API para Prolog?
Sim. Envie o código, o id do compilador swipl-10 e a entrada para https://api.onlinecompiler.io/api/run-code-sync/ com uma chave de API, e a resposta traz a saída, os erros, o código de saída, o tempo e a memória. É grátis até 100.000 execuções por mês, e a mesma chave serve para as outras 45 linguagens. A documentação está em inglês.