ajout des pages pour l'énigme chuckNorris + mise à jour des pages pour l'énigme palindromeServeurDeTest
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 = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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>
|
Loading…
Reference in new issue