Accueil > > > LE COMPTE EST BON
LE COMPTE EST BON
Information sur la source
Description
Intégrée à une simple page html, cette version javascript, permet de s'adonner au jeu télévisé bien connu, sans aucun logiciel ni applet. Fonctionne sur tous les navigateurs récents.
Source
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
- <html lang="fr">
- <head>
- <title>Le compte est bon</title>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <style type="text/css">
- <!--
- body,input,select {font-family:georgia;font-size:9pt;color:#000066}
- body {margin:0px;padding:20px}
- h1 {margin:13px;padding:0;margin-top:0;font-size:20pt;text-align:center;font-weight:bold;color:#990099}
- hr{width:300px}
- div{margin:0;padding:0;border:0}
- p {margin:7px;padding:0;text-align:center}
- input {text-align:center;border:1px solid gray}
- #jeu{margin-bottom:17px}
- #jeu p {text-align:center}
- #jeu span{font-size:9pt;font-weight:normal}
- #idc {width:100px;margin:13px auto;padding:3px 3px 7px;font-size:36px;background-color:#cccccc}
- #ipl {width:436px;margin:0 auto;border:0px solid red}
- #ipl input {display:block;float:left;width:44px;margin:0 10px;padding:3px 3px 5px;font-size:24px;background-color:#eeeeee}
- #mdp {clear:both;margin-top:60px}
- #idt,#isl {font-size:18px;font-weight:bold}
- a {color:#990099}
- #pdp{text-align:center}
- -->
- </style>
- <script type="text/javascript">
- <!--
- function $(i){return document.getElementById(i)}
- var _p=[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,25,50,75,100];
- var _c,_t=new Array(6),_m,_e={"which":13,"target":null};
- var Tgn={
- c:null,// valeur cible initiale
- b:null,// valeur cible bis (initiale ou modifiée)
- n:null,// nombre de plaques valides
- m:null,// message compte, approximation ou erreur
- r:null,// réponse littérale
- s:null,// spectre des valeurs
- t:new Array(42),// tableau des plaques selon les niveaux
- z:null,// temps de calcul
-
- sol:function(c,p,mode){var i,j,k,o=[],q=[],l=p.length,x;
- this.z=-(new Date().getTime());
- if (c=='') c=0;c=parseInt(c);
- if (typeof(c)!='number' || c<1) {this.m='Valeur cible erronée';
- this.r='<br>toutes les valeurs entières positives sont ici admises !';this.z=0;return}
- this.c=parseInt(c);this.b=this.c;this.s={};
- j=0;for (i=0;i<l;i++) {if (isNaN(k=parseInt(p[i]))) continue;q[j++]=k;}
- if (j<3) {this.m='Nombre de plaques insuffisant';
- this.r='<br>trois plaques vierges au plus sont acceptées !';this.z=0;return}
- this.m='Le compte est bon';
- // Classement décroissant
- this.n=j;for (i=0;i<j;i++) {k=i;while(0<k && o[k-1]<q[i]) o[k]=o[--k];o[k]=q[i];}
- // Enregitrement plaques ordonnées (le max dégrade o) et test si une plaque convient
- for(i=0;i<j;i++) {Tgn.t[6*j+i]=o[i];if (this.c==o[i]) {this.r='<br>'+o[i];this.z=0;return}}
- // Calcul du max modifié 2010.09.19
- x=1;
- while (o[k=j-1]==1) if (5<j && o[j-2]==1 && o[j-3]==1 && o[j-4]==2 && o[j-5]==2 && o[j-6]==2) {x=27;j=j-6;}
- else if (3<j && o[j-2]==1 && o[j-3]==2 && o[j-4]==2) {x=9;j=j-4;}
- else {v=o[--k]+1;while(0<k && o[k-1]<v) o[k]=o[k--];o[k]=v;j=j-1;}
- k=j-1;while(-1<k) x*=o[k--];
-
- // Cible modifiée si supérieure à max
- if (x<this.c) {this.b=x;this.m=''+x;}
- while (!this.dcp(this.n)) {
- i=this.b+1;while(typeof(this.s[i])=='undefined') i++;
- j=this.b-1;while(0<j && typeof(this.s[j])=='undefined') j--;
- if ((this.b-j)<=(i-this.b)) this.b=j;else this.b=i;
- this.m=''+this.b;this.s={};}
- this.z+=new Date().getTime();
- },
- // Modifié 2010.09.19 plus de tri (mais un test initial) pour ne reprendre qu'une fois les valeurs
- // Modifié le 2010.09.21 seules les opérations utiles sont reprises
- dcp:function(a){var i,j,k,v=(a<<3)-a,u=v-a,x,y,w;
- for (i=u;i<v;i++) for (j=u;j<v;j++){
- if (i==j || (x=this.t[i])<(y=this.t[j])) continue;
-
- // addition
- if ((w=x+y)==this.b) {this.r='<br> '+x+' + '+y+' = '+w;return 1;}
- // seule définition des plaques à reprendre
- k=u-5;for (var l=u;l<v;l++) {if (l==i || l==j) continue;
- this.t[k++]=this.t[l];}
- k=u-6;
- this.s[w]=1;this.t[k]=w;
- if (this.dcp(a-1)==1) {
- if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' + '+this.t[j]+' = '+w+this.r;
- return 1;}
- // soustraction
- if (x!=y && x!=y<<1) {
- if ((w=x-y)==this.b) {this.r='<br> '+x+' - '+y+' = '+w;return 1;}
- this.s[w]=1;this.t[k]=w;
- if (this.dcp(a-1)==1){
- if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' - '+this.t[j]+' = '+w+this.r;
- return 1;}}
- // multiplication
- if (1<x && 1<y) {
- if ((w=x*y)==this.b) {this.r='<br> '+x+' x '+y+' = '+w;return 1;}
- this.s[w]=1;this.t[k]=w;
- if (this.dcp(a-1)==1){
- if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' x '+this.t[j]+' = '+w+this.r;
- return 1;}}
- // division
- if (1<y && x%y==0 && x!=y*y) {
- if ((w=x/y)==this.b) {this.r='<br> '+x+' / '+y+' = '+w;return 1;}
- this.s[w]=1;this.t[k]=w;
- if (this.dcp(a-1)==1){
- if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' / '+this.t[j]+' = '+w+this.r;
- return 1;}}
- }
- return 0}
- };
-
- function ini(){var i,j,p={},t;
- do {_c=100+Math.floor(900*Math.random())} while (_c==1000);
- for (i=0;i<6;i++) {
- do {j=Math.floor(24*Math.random())} while (j==24 || typeof(p[j])=='number');
- _t[i]=_p[j];p[j]=1;}
- $('idc').value=_c;$('isl').innerHTML='';
- t="";i=0;while(i<6) t+='<input id="idp'+i+'" type="text" value="'+_t[i++]+'">';
- $('ipl').innerHTML=t;
- setTimeout('sol()',7);
- }
- function ntr(e){var o=!e?window.event.keyCode:e.which,t=!e?window.event.srcElement:e.target;
- if (t.id.substr(0,2)=='id' && t.value!='' && (t.value==0 || isNaN(t.value))) {t.value='';$('isl').innerHTML='';return}
- if (t.id.substr(0,2)=='id' && t.value<0) {t.value=-t.value;$('isl').innerHTML='';return}
- if (o!=13 || t.id.substr(0,2)!='id') return true;
- _c=$('idc').value;
- for (i=0;i<6;i++) _t[i]=$('idp'+i).value;
- $('isl').innerHTML='';setTimeout('sol()',7);
- }
- function sol(){
- Tgn.sol(_c,_t);_m='<a id="idt" href="javascript:edt()" title="En savoir plus...">'+Tgn.m+' !</a>';
- $('isl').innerHTML=_m;
- }
- function edt(){var t=(Tgn.z<2)?'<span>immédiat</span>':'<span>(en '+Tgn.z.toString()+' millisecondes)</span>';
- $('isl').innerHTML=Tgn.m+' '+t+Tgn.r;
- }
- document.onkeyup=ntr;
- // -->
- </script>
- </head>
- <body onload="ini()">
- <div><h1>Le compte est bon</h1>
- <p>Le <a href="http://programmes.france3.fr/des-chiffres-et-des-lettres/23806420-fr.php" title="Voir Des chiffres et des lettres sur France3">jeu</a> consiste à obtenir ou approcher un nombre de trois chiffres<br>
- au moyen des opérations élémentaires appliquées au plus à six nombres entiers</p>
- <div id="jeu"><p><input id="idc" type="text" value=""></p><p id="ipl"></p>
- <p id="mdp"><a href="javascript:(_e.target=$('idc'),ntr(_e))" title="Lancer la résolution du jeu affiché">Ok</a> ou <b><i>Entrée</i></b> après modifications des valeurs ou <a href="javascript:ini()" title="Nouveau jeu">tirage au sort</a></p>
- <p id="isl"></p>
- </div>
- </div>
-
- <div id="pdp">L�utilisation de FireFox, Google Chrome, Opera ou Safari permet d�éviter les avertissements d�Internet Explorer
- <hr><i>Page entoilée par Julien de Prabère - septembre 2010</i></div>
- </body>
- </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<title>Le compte est bon</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style type="text/css">
<!--
body,input,select {font-family:georgia;font-size:9pt;color:#000066}
body {margin:0px;padding:20px}
h1 {margin:13px;padding:0;margin-top:0;font-size:20pt;text-align:center;font-weight:bold;color:#990099}
hr{width:300px}
div{margin:0;padding:0;border:0}
p {margin:7px;padding:0;text-align:center}
input {text-align:center;border:1px solid gray}
#jeu{margin-bottom:17px}
#jeu p {text-align:center}
#jeu span{font-size:9pt;font-weight:normal}
#idc {width:100px;margin:13px auto;padding:3px 3px 7px;font-size:36px;background-color:#cccccc}
#ipl {width:436px;margin:0 auto;border:0px solid red}
#ipl input {display:block;float:left;width:44px;margin:0 10px;padding:3px 3px 5px;font-size:24px;background-color:#eeeeee}
#mdp {clear:both;margin-top:60px}
#idt,#isl {font-size:18px;font-weight:bold}
a {color:#990099}
#pdp{text-align:center}
-->
</style>
<script type="text/javascript">
<!--
function $(i){return document.getElementById(i)}
var _p=[1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10,25,50,75,100];
var _c,_t=new Array(6),_m,_e={"which":13,"target":null};
var Tgn={
c:null,// valeur cible initiale
b:null,// valeur cible bis (initiale ou modifiée)
n:null,// nombre de plaques valides
m:null,// message compte, approximation ou erreur
r:null,// réponse littérale
s:null,// spectre des valeurs
t:new Array(42),// tableau des plaques selon les niveaux
z:null,// temps de calcul
sol:function(c,p,mode){var i,j,k,o=[],q=[],l=p.length,x;
this.z=-(new Date().getTime());
if (c=='') c=0;c=parseInt(c);
if (typeof(c)!='number' || c<1) {this.m='Valeur cible erronée';
this.r='<br>toutes les valeurs entières positives sont ici admises !';this.z=0;return}
this.c=parseInt(c);this.b=this.c;this.s={};
j=0;for (i=0;i<l;i++) {if (isNaN(k=parseInt(p[i]))) continue;q[j++]=k;}
if (j<3) {this.m='Nombre de plaques insuffisant';
this.r='<br>trois plaques vierges au plus sont acceptées !';this.z=0;return}
this.m='Le compte est bon';
// Classement décroissant
this.n=j;for (i=0;i<j;i++) {k=i;while(0<k && o[k-1]<q[i]) o[k]=o[--k];o[k]=q[i];}
// Enregitrement plaques ordonnées (le max dégrade o) et test si une plaque convient
for(i=0;i<j;i++) {Tgn.t[6*j+i]=o[i];if (this.c==o[i]) {this.r='<br>'+o[i];this.z=0;return}}
// Calcul du max modifié 2010.09.19
x=1;
while (o[k=j-1]==1) if (5<j && o[j-2]==1 && o[j-3]==1 && o[j-4]==2 && o[j-5]==2 && o[j-6]==2) {x=27;j=j-6;}
else if (3<j && o[j-2]==1 && o[j-3]==2 && o[j-4]==2) {x=9;j=j-4;}
else {v=o[--k]+1;while(0<k && o[k-1]<v) o[k]=o[k--];o[k]=v;j=j-1;}
k=j-1;while(-1<k) x*=o[k--];
// Cible modifiée si supérieure à max
if (x<this.c) {this.b=x;this.m=''+x;}
while (!this.dcp(this.n)) {
i=this.b+1;while(typeof(this.s[i])=='undefined') i++;
j=this.b-1;while(0<j && typeof(this.s[j])=='undefined') j--;
if ((this.b-j)<=(i-this.b)) this.b=j;else this.b=i;
this.m=''+this.b;this.s={};}
this.z+=new Date().getTime();
},
// Modifié 2010.09.19 plus de tri (mais un test initial) pour ne reprendre qu'une fois les valeurs
// Modifié le 2010.09.21 seules les opérations utiles sont reprises
dcp:function(a){var i,j,k,v=(a<<3)-a,u=v-a,x,y,w;
for (i=u;i<v;i++) for (j=u;j<v;j++){
if (i==j || (x=this.t[i])<(y=this.t[j])) continue;
// addition
if ((w=x+y)==this.b) {this.r='<br> '+x+' + '+y+' = '+w;return 1;}
// seule définition des plaques à reprendre
k=u-5;for (var l=u;l<v;l++) {if (l==i || l==j) continue;
this.t[k++]=this.t[l];}
k=u-6;
this.s[w]=1;this.t[k]=w;
if (this.dcp(a-1)==1) {
if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' + '+this.t[j]+' = '+w+this.r;
return 1;}
// soustraction
if (x!=y && x!=y<<1) {
if ((w=x-y)==this.b) {this.r='<br> '+x+' - '+y+' = '+w;return 1;}
this.s[w]=1;this.t[k]=w;
if (this.dcp(a-1)==1){
if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' - '+this.t[j]+' = '+w+this.r;
return 1;}}
// multiplication
if (1<x && 1<y) {
if ((w=x*y)==this.b) {this.r='<br> '+x+' x '+y+' = '+w;return 1;}
this.s[w]=1;this.t[k]=w;
if (this.dcp(a-1)==1){
if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' x '+this.t[j]+' = '+w+this.r;
return 1;}}
// division
if (1<y && x%y==0 && x!=y*y) {
if ((w=x/y)==this.b) {this.r='<br> '+x+' / '+y+' = '+w;return 1;}
this.s[w]=1;this.t[k]=w;
if (this.dcp(a-1)==1){
if (-1<this.r.search(new RegExp(' '+w+' '))) this.r='<br> '+this.t[i]+' / '+this.t[j]+' = '+w+this.r;
return 1;}}
}
return 0}
};
function ini(){var i,j,p={},t;
do {_c=100+Math.floor(900*Math.random())} while (_c==1000);
for (i=0;i<6;i++) {
do {j=Math.floor(24*Math.random())} while (j==24 || typeof(p[j])=='number');
_t[i]=_p[j];p[j]=1;}
$('idc').value=_c;$('isl').innerHTML='';
t="";i=0;while(i<6) t+='<input id="idp'+i+'" type="text" value="'+_t[i++]+'">';
$('ipl').innerHTML=t;
setTimeout('sol()',7);
}
function ntr(e){var o=!e?window.event.keyCode:e.which,t=!e?window.event.srcElement:e.target;
if (t.id.substr(0,2)=='id' && t.value!='' && (t.value==0 || isNaN(t.value))) {t.value='';$('isl').innerHTML='';return}
if (t.id.substr(0,2)=='id' && t.value<0) {t.value=-t.value;$('isl').innerHTML='';return}
if (o!=13 || t.id.substr(0,2)!='id') return true;
_c=$('idc').value;
for (i=0;i<6;i++) _t[i]=$('idp'+i).value;
$('isl').innerHTML='';setTimeout('sol()',7);
}
function sol(){
Tgn.sol(_c,_t);_m='<a id="idt" href="javascript:edt()" title="En savoir plus...">'+Tgn.m+' !</a>';
$('isl').innerHTML=_m;
}
function edt(){var t=(Tgn.z<2)?'<span>immédiat</span>':'<span>(en '+Tgn.z.toString()+' millisecondes)</span>';
$('isl').innerHTML=Tgn.m+' '+t+Tgn.r;
}
document.onkeyup=ntr;
// -->
</script>
</head>
<body onload="ini()">
<div><h1>Le compte est bon</h1>
<p>Le <a href="http://programmes.france3.fr/des-chiffres-et-des-lettres/23806420-fr.php" title="Voir Des chiffres et des lettres sur France3">jeu</a> consiste à obtenir ou approcher un nombre de trois chiffres<br>
au moyen des opérations élémentaires appliquées au plus à six nombres entiers</p>
<div id="jeu"><p><input id="idc" type="text" value=""></p><p id="ipl"></p>
<p id="mdp"><a href="javascript:(_e.target=$('idc'),ntr(_e))" title="Lancer la résolution du jeu affiché">Ok</a> ou <b><i>Entrée</i></b> après modifications des valeurs ou <a href="javascript:ini()" title="Nouveau jeu">tirage au sort</a></p>
<p id="isl"></p>
</div>
</div>
<div id="pdp">L�utilisation de FireFox, Google Chrome, Opera ou Safari permet d�éviter les avertissements d�Internet Explorer
<hr><i>Page entoilée par Julien de Prabère - septembre 2010</i></div>
</body>
</html>
Conclusion
Qui saura améliorer ce script pour trouver non pas la première mais la meilleure solution ?
Historique
- 23 février 2011 12:05:33 :
- Adaptation des mots clefs
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
verification formulaire avec test() [ par ygsi5355 ]
J'avais une vérification qui fonctionnait bien.J'ai ajouté || (/^[0-9] {10}$/.test(document.quizz.tel.value))pour vérifier qu'il y a uniquement 10 chi
Quizz html [ par jeremiedub ]
Bonjour, je suis novice en JavaScript et j'essaie de créer un quizz, j'en ai trouvé sur le site, mais ce que je voudrais c'est un quizz qui
quizz qui comtabilise les points et renvoi sur une page.... [ par jabry ]
Bonjour Je debute en javascript et je souhaite réalisez un quizz qui comptabilise les points et renvoie sur une page en fonctions du nombre de po
transition entre deux textures [ par aze555666 ]
Bonjour.J'ai un site sur lequel je propose aux internautes de créer des quizz, et ils peuvent choisir texture+couleur de police.Je voudrais maint
rafraîchissement [ par domsig ]
bonjour à tous et à toutescomme je débute en javascript, et que je n'ai pas trouvé sur ce site ma réponse, voilà ma question :j'ai une page de quizz,
onLoad/onPageShow [ par domsig ]
bonjour à tous je fais un site avec un peu de javascript pour faire un quizz (visible sur http://www.amis-marolles.org/index_quizz.htm) je fais un raf
ALGORITHME DU VOYAGEUR DE COMMERCE [ par hajouraaa ]
Salut tout le monde!J'aurai besoin de l'algorithme du voyageur de commerce en javascript (de préférence php)et je ne trouve rien sur net .. j'ai bien
[=> javafr] algorithme [ par bkch ]
salut chui nouvelle sur le site j ai besoin d un algo bellman ford et un autre dijkstra sur l echange des paquets entre routeurs en java le plus simpl
Questionnaire QUIZZ pour site [ par scrat13 ]
Bonjour à tous, Après plusieurs heures de "prise de tête" sur un projet de création d'un questionnaire en ligne, j'ai finalement conclu qu'il était t
algoritmes séquentiels solution en javascript [ par Madonnina78 ]
Bonjour je suis débutante en javascript et je n'arrive pas à résoudre un algorithme en javascript. Ecrire un algorithme qui, étant donné un temps éco
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|