Resoultion du problème des boucles infinis +

ajout des pages pour l'énigme chuckNorris +
mise à jour des pages pour l'énigme palindrome
ServeurDeTest
Noé GARNIER 3 years ago
parent 625bbba858
commit f758b29409

@ -0,0 +1,30 @@
def Encrypt(text, key):
result = ""
for i in range(len(text)):
char = text[i]
if(char==" "):
result+=" "
elif (char.isupper()):
result += chr((ord(char) + key-65) % 26 + 65)
else:
result += chr((ord(char) + key - 97) % 26 + 97)
return result
def Decrypt(text, key):
result = ""
for i in range(len(text)):
char = text[i]
if(char==" "):
result+=" "
elif (char.isupper()):
result += chr((ord(char) - key-65) % 26 + 65)
else:
result += chr((ord(char) - key - 97) % 26 + 97)
return result
print(Encrypt("Hello world", 29))
print(Decrypt("Khoor zruog", 29))

@ -0,0 +1,192 @@
function run() {
const terminal = document.getElementById("console");
const runner = new BrythonRunner({
stdout: {
write(content) {
terminal.innerHTML += content;
terminal.scrollTop = terminal.scrollHeight;
},
flush() {}
},
stderr: {
write(content) {
terminal.innerHTML += content;
terminal.scrollTop = terminal.scrollHeight;
},
flush() {}
},
stdin: {
async readline() {
terminal.innerHTML += "\n";
terminal.scrollTop = terminal.scrollHeight;
var userInput = prompt();
return userInput;
},
flush() {}
}
});
var code = editor.getValue();
runner.runCode(code);
setTimeout(() => {
runner.stopRunning();
}, 10*1000);
}
function run_init() {
if (document.getElementById("console") != '') {
document.getElementById("console").innerHTML = '';
}
run();
}
var editor = ace.edit("editor");
editor.setTheme("ace/theme/vibrant_ink");
editor.getSession().setMode("ace/mode/python");
editor.setFontSize("16px");
editor.container.style.height = "250px"
editor.setOptions({
enableLiveAutocompletion: true,
copyWithEmptySelection: true,
showGutter: true,
useWrapMode: true, // wrap text to view
indentedSoftWrap: false,
});
//Function that execute given code and return the result in a given element by id
function exec(code, id) {
const terminal = document.getElementById("console");
const runner = new BrythonRunner({
stdout: {
write(content) {
if (id == "code"){
retourCode = content;
}
if (id == "solution"){
retourSolution = content;
}
},
flush() {}
},
stderr: {
write(content) {
if (id == "solution"){
retourSolution = "ERROR";
}
terminal.innerHTML += content;
terminal.scrollTop = terminal.scrollHeight;
},
flush() {}
},
stdin: {
async readline() {
terminal.innerHTML += "\n";
terminal.scrollTop = terminal.scrollHeight;
var userInput = prompt();
return userInput;
},
flush() {}
}
});
runner.runCode(code)
setTimeout(() => {
runner.stopRunning();
}, 10*1000);
}
//~ Function that check if the code in the editor as the same result as the solution.
function check(){
if (retourSolution == "ERROR") {
result.innerHTML = "Il semblerait qu'il y a une erreur dans ton code :/";
result.classList.remove('hidden');
}
else if (retourSolution == retourCode) {
result.innerHTML = "Bien joué";
result.classList.remove('hidden');
}
else {
result.innerHTML = "Mauvaise réponse";
result.classList.remove('hidden');
}
}
//~ Function that test the user code
async function submit(){
var test = editor.getValue()+`\n
import random as r
def binaire2unitaireVerif(x):
rep=0
pre=x[0]
unitaire=""
for i in x:
if(pre==i):
rep+=1
else:
if(pre=="1"):
unitaire=unitaire+"0 "
else:
unitaire=unitaire+"00 "
for j in range(rep):
unitaire=unitaire+"0"
unitaire=unitaire+" "
rep=1
pre=i
if(pre=="1"):
unitaire=unitaire+"0 "
else:
unitaire=unitaire+"00 "
for i in range(rep):
unitaire=unitaire+"0"
return unitaire
def testChuckNorris(x):
l="0000000"
if(binaire2unitaire(l)!="00 0000000"):
return False
l="1111111"
if(binaire2unitaire(l)!="0 0000000"):
return False
l="1101001"
if(binaire2unitaire(l)!="0 00 00 0 0 0 00 00 0 0"):
return False
l=""
for i in range(x):
for j in range(r.randint(1,10)):
l=l+str(r.randint(0,1))
if(binaire2unitaire(l)!=binaire2unitaireVerif(l)):
return False
l=""
return True
print(testChuckNorris(5))
`;
exec("print ('True')", "code");
exec(test, "solution");
await new Promise(r => setTimeout(r, 1500));
check();
}
function aide(){
if(document.getElementById("textAide").textContent == ""){
document.getElementById("textAide").textContent = "Bonne chance :)";
}
else{
document.getElementById("textAide").textContent = "";
}
}
function rappel(){
if(document.getElementById("textRappel").textContent == ""){
document.getElementById("textRappel").textContent = `
Dans le codage Chuck Norris, le '0' est codé '00' et le '1' est codé '0'. Puis un espace, puis ensuite autant de '0' que le message contient de '0' ou '1' successifs.
Par exemple, la suite "10000111" sera traduite de la façon suivante : "0 0 00 0000 0 000
`
}
else{
document.getElementById("textRappel").textContent = "";
}
}

@ -1,29 +1,24 @@
function Abort()
{
throw new Error('This is not an error. This is just to abort javascript');
}
function run() {
const console = document.getElementById("console");
const terminal = document.getElementById("console");
const runner = new BrythonRunner({
stdout: {
write(content) {
console.innerHTML += content;
console.scrollTop = console.scrollHeight;
terminal.innerHTML += content;
terminal.scrollTop = terminal.scrollHeight;
},
flush() {}
},
stderr: {
write(content) {
console.innerHTML += content;
console.scrollTop = console.scrollHeight;
terminal.innerHTML += content;
terminal.scrollTop = terminal.scrollHeight;
},
flush() {}
},
stdin: {
async readline() {
console.innerHTML += "\n";
console.scrollTop = console.scrollHeight;
terminal.innerHTML += "\n";
terminal.scrollTop = terminal.scrollHeight;
var userInput = prompt();
return userInput;
},
@ -31,21 +26,17 @@ function run() {
}
});
var code = editor.getValue();
runner.runCode(code)
}
function run_init() {
runner.runCode(code);
setTimeout(() => {
runner.stopRunning();
}, 10*1000);
}
function run_init() {
if (document.getElementById("console") != '') {
document.getElementById("console").innerHTML = '';
run();
//setTimeout(() => {console.log("Resolve while pb")}, 1000);
//setTimeout(() => {Abort()}, 5000);
}
else {
run();
//setTimeout(() => {console.log("Resolve while pb")}, 1000);
//setTimeout(() => {Abort()}, 5000);
}
run();
}
var editor = ace.edit("editor");
@ -65,7 +56,6 @@ editor.setOptions({
function exec(code, id) {
const terminal = document.getElementById("console");
const retour = document.getElementById(id);
const runner = new BrythonRunner({
stdout: {
write(content) {
@ -99,6 +89,9 @@ function exec(code, id) {
}
});
runner.runCode(code)
setTimeout(() => {
runner.stopRunning();
}, 10*1000);
}
//~ Function that check if the code in the editor as the same result as the solution.

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Brython</title>
<link rel="stylesheet"href="../css/all.css" />
</head>
<body>
<div class="enigme">
<h2>
Coder un fonction binaire2unaire qui prend en argument un nombre binaire et le code via le codage Chucknorris.
</h2>
</div>
<h1 id="result" class="hidden"></h1>
<button onclick="run_init()">run</button>
<button onclick="submit()">submit</button>
<button onclick="aide()" id="buttonAide">Aide</button>
<button onclick="rappel()" id="buttonRappel">Rappel</button>
<p id="textAide"></p>
<p id="textRappel"></p>
<div class='editor_class' id='editor'>def binaire2unitaire(x):
rep=0
pre=x[0]
unitaire=""
for i in x:
if(pre==i):
rep+=1
else:
if(pre=="1"):
unitaire=unitaire+"0 "
else:
unitaire=unitaire+"00 "
for j in range(rep):
unitaire=unitaire+"0"
unitaire=unitaire+" "
rep=1
pre=i
if(pre=="1"):
unitaire=unitaire+"0 "
else:
unitaire=unitaire+"00 "
for i in range(rep):
unitaire=unitaire+"0"
return unitaire
</div>
<div class='compiler_class'>
<textarea id='console' readonly></textarea>
</div>
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script>
<script src="../javascript/chuckNorris.js"></script>
</body>
</html>

@ -5,7 +5,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Brython</title>
<link rel="stylesheet"href="../css/palindrome.css" />
<link rel="stylesheet"href="../css/all.css" />
</head>
<body>
<div class="enigme">

Loading…
Cancel
Save