paizaの懸賞問題解答(期限切れ)(正答かは知らない)

paizaの懸賞問題の提出が間に合わず、提出し損ねたのでここに保存する。
しりとりをして最後に残った人数と人の番号を出力する問題。python3で解答。

ppl,wordNum,remarkNum=map(int,input().split())
wordList=[]
for _ in range(wordNum):
    word=input()
    if word[-1]!='z':
        wordList.append(word)
humanList=[i for i in range(1,ppl+1)]
#「newGameかつwordが前回の語尾と異なる始まり」、もしくは語尾がz、もしくはwordListに含まれていないときは脱落
newGame=True
nowIndex=0
for _ in range(1,remarkNum+1):
    word=input()
    if (not newGame and lastWord[-1]!=word[0])\
        or word[-1]=='z' or (word not in wordList):
        humanList.pop(nowIndex)
        newGame=True
        nowIndex=nowIndex % len(humanList)
    else:
        wordList.remove(word)
        lastWord=word
        newGame=False
        nowIndex=(nowIndex+1) % len(humanList)
    #print(humanList)

print(len(humanList))
for i in range(len(humanList)):
    print(humanList[i])

ブラウザ版輪廻シミュレーション

おみくじアプリをいじってブラウザ版輪廻ゲームを書いたけど、走らせ方がわからない - おぼえがきの続き。
ちゃんと動いたけど、ワンクリックでページを表示できるような公開の仕方がわからない。
ので、ソースコードを張って置く。


index.html

<!DOCTYPE html>
<html lang="ja">
<head> 
  <meta charset="UTF-8">
  <link rel="stylesheet" href="main.css">
  <title>輪廻シミュレーション</title>
</head>
<body>
  <div id="rinne">
    <h1>輪廻</h1>
    <p id="output">あなたの来世…?</p>
    <button id="btn"></button>
    <script src="main.js"></script>
  </div>
</body>
</html>


main.css

#rinne > #output > h2 {
  font-size: 30px;
  font-family: serif;
  margin: 0;
  text-shadow: 0 -1px 0 #222;
}

  #rinne {
    text-align: center;
    width: 500px;
    background-color: #EDA;
    border: 3px double #990;
  }

  #rinne > h1 {
    color: #630;
    font-family: serif;

    font-size: 15px;
    font-family: serif;
    margin: 0;
  }

  #rinne > #output {
    background-color: #04A6EB;
    color: #FFF;
    margin: 10px auto;
    padding: 5px;
  }

  #rinne > #btn {
    background: #740;
    border: 0;
    color: #FFF;
    cursor: pointer;
    font-size: 20px;
    font-family: serif;
    margin: 10px auto 20px auto;
    padding: 5px 20px;

  }

  #rinne > #btn:hover {
    background: #960;
  }

  #rinne > #btn:active {
    background: #630;
  }


main.js

(function () {
  'use-strict';
  const spieces = ['ヒト', 'ヒグマ', 'センチニクバエ', 'ヒトスジシマカ', 'アカウシアブ', 'チャバネゴキブリ', 'チンパンジー', 'イエネコ', 'オオバコ', 'AI'];
  var message = '';
  var random_spieces = '';
  var key = 0;
  const btn = document.getElementById('btn');
  const output = document.getElementById('output');
  var deg = 0;

  btn.onclick = () => {
    if (key == 0 && Math.random() < (1 / 3)) {
      message = '<h2>解脱</h2>';
      output.innerHTML = message;
      btn.remove();
      return;
    }
    key = Math.floor(Math.random() * spieces.length);
    random_spieces = spieces[key];
    message = '<h2>' + random_spieces + 'として生まれる</h2>';
    output.innerHTML = message;
  }

  const rinne = document.getElementById('rinne');

  function rotateGedats() {
    if (message == '<h2>解脱</h2>') {      
      rinne.style.transform = 'rotateZ(' + deg + 'deg)';
      deg = deg + 6;
    }
  }

  setInterval(rotateGedats, 20);

})();

CodinGameのMars Lander 1の模範解答への蛇足コメント

http://ethiery.vvv.enseirb-matmeca.fr/CGsolo/mars-lander-1.html
このサイトに載っているコードの一部にコメントを追加します。

      /* もし今スラスターを吹かしてなくて、今からスラスターを吹かし始めて、
   スラスターが最大に吹かされた時の垂直速度と高度を求める*/
   
        double vdY = (double)dY;
        double vY = (double)Y;
        for (double i = 0.0; i <= 4; i++) {
            vdY += i - 3.711;
            vY += vdY;
        }

   /*その時、着地していなくて、落下中である限り、一秒後の高度と落下速度を求める。
   最後に求められる高度と落下速度は、着地した時、または上昇し始めた時の、高度と落下速度。*/
        while (vY > groundY && vdY < 0) {
            vdY += 0.289; // 4-3.711;
            vY += vdY;
        }

      //その時落下速度が-40以上なら、今スラスターを吹かさない、-40以下なら、今吹かす。
        printf((vdY > -40.0) ? "0 0\n" : "0 4\n");

   /*もし今スラスターを吹かしているとしたら、「以降スラスターを全開に吹かしていい」という計算結果を
   すでに出しているはずで、さらに、今スラスターを吹かしていないと仮定した場合の着地時の落下速度は
   実際の着地時の落下速度よりも小さくなり、「スラスターを全開に吹かす」という出力を出すので、問題ない*/

27の最も奇妙な医学ケース

https://t.co/qJDxEJnG6z
これを日本語で要約しました

  1. 生食による寄生虫感染
  2. 寄生虫と痛みを伴う排尿
  3. 魚の群れと衝突して魚の骨が瞼に刺さった状態
  4. 数独発作(数独をしてると発作が起きる)
  5. ピラティスによる脳液漏れによる頭痛
  6. 脳内乳歯
  7. エナジードリンクの飲み過ぎによる心臓発作
  8. 吸入器でイヤリングを吸い込んだ
  9. 怪しいお茶の飲み過ぎによる急性肝炎
  10. 妊娠中の重曹の食べ過ぎによる筋肉の弱化
  11. ポルノを見ると起きる頭痛
  12. 醤油の過剰摂取
  13. 食道捻転
  14. 白内障による瞳の中の星
  15. 眼球の上の良性腫瘍に髪が生えた
  16. タトゥーを入れられた陰茎の半永久的な半勃起
  17. 炭酸飲料の過剰摂取によるカリウム欠乏
  18. 爪楊枝を飲み込んだことによる数か月の嘔吐と低血圧
  19. 眼疾患による幻覚
  20. 子猫に引き起こされた壊疽性潰瘍
  21. 病理学的寛大さ(脳卒中後に過度に他人に施すようになった)
  22. 非常な共感(扁桃体を切除した後に、怒りや悲しみに消化器の不快感が伴うようになった)
  23. 虫垂に溜まった鉛ペレット(鉛玉で仕留められた獲物を食べたことによる)
  24. 感染した脇の下の毛
  25. サーファーの目の表面に繊維組織が成長する
  26. 脳内にカルシウムが蓄積され石になった
  27. グルテン妄想(グルテンを摂取すると起きる妄想)

おみくじアプリをいじってブラウザ版輪廻ゲームを書いたけど、走らせ方がわからない

CODEPREPのを盗用した。htmlをブラウザで表示させるのはできるんだけど、それ以外と組み合わせられない。ツールとかインストールしないといけないのだろうか。
index.html

<!DOCTYPE html>
<html lang="ja">
  <head> 
  <meta charset="UTF-8">
    <title>HTML+CSS</title>
    <link rel="stylesheet" type="text/css" href="main.css">
    <script src="main.js"></script>
  </head>
  <body>
    <div id="rinne">
      <h1>輪廻</h1>
      <p id="output">あなたの来世…?</p>
      <input type="button" id="btn" value="死">
    </div>
  </body>
</html>


main.css

#rinne > #output > h2 {
  font-size: 70px;
  font-family: serif;
  margin: 0;
  text-shadow: 0 -1px 0 #222;
}

#rinne > #output > p {
@charset "UTF-8";

#rinne {
  text-align: center;
  width: 294px;
  background-color: #EDA;
  border: 3px double #990;
}

#rinne > h1 {
  color: #630;
  font-family: serif;

  font-size: 15px;
  font-family: serif;
  margin: 0;
}

#rinne > #output {
  background-color: #C00;
  color: #FFF;
  margin: 10px auto;
  padding: 5px;
}

#rinne > #btn {
  background: #740;
  border: 0;
  color: #FFF;
  cursor: pointer;
  font-size: 20px;
  font-family: serif;
  margin: 10px auto 20px auto;
  padding: 5px 20px;

}

#rinne > #btn:hover {
  background: #960;
}

#rinne > #btn:active {
  background: #630;
}


main.js

window.onload = function(){
var spieces = ["ヒト","ヒグマ","センチニクバエ","ヒトスジシマカ","アカウシアブ", "チャバネゴキブリ", "チンパンジー","イエネコ","オオバコ","AI"];
var message, random_spieces;
var btn = document.getElementById("btn");
var output = document.getElementById("output");
}

btn.onclick = function(){
  random_spieces = spieces[ Math.floor( Math.random() * spieces.length ) ];
    if(random_spieces=="ヒト"){
	if(Math.random()<0.33){
	  message="<h2>解脱</h2>";
	  output.innerHTML = message;
	  btn.remove();
	}
    }else{
      message = "<h2>" + random_spieces + "として生まれる</h2>";
      output.innerHTML = message;
    }
}

角落ちと香落ちの間

 僕ではないある一人の人間と将棋を複数局指したのだけど、上手が僕で、角落ちだと僕にとって厳しくて、香落ちだと相手にとって厳しい。そこでその間のハンデが欲しいので、Aperyに色んな初期局面の形勢を判断させてみた。4coreマシンで、1局面につき、30から50秒くらいかけて。特に断りがなければ上手(不利な方)の手番から始める。評価値は上手から見たもの。

角落ち -600


両香落ち -750
右桂香落ち -700
両桂落ち -650


右金落ち -600
左金落ち -500
左香落ち(下手番から)-500
右銀落ち(下手番から)-380
こんな陣形 -420


左香落ち -350
右香落ち -300
右銀落ち -200
左銀落ち -200
右桂落ち -300
左桂落ち -200


こんな陣形とは、

のこと。駒を落とさないのでゲームの複雑さが減らないのが利点。


 と言う訳で、角落ちと香落ちの間のハンデで指したければ、右金落ちや左金落ちや左香落ち(下手番から)や右銀落ち(下手番から)や、"こんな陣形"を試してみよう。本当に銀落ちより香落ちの方がハンデが大きいというのは僕は納得行ってないけど。

m次元n路盤オセロへの道(1.初期配置)

 m次元n路盤(mは1以上の整数。nは2以上の偶数。)の合法手、終局、勝敗判定を出来るソフトを作りたい。初回は初期配置について考える。


 2次元8路盤の場合、、白(d, 4), (e, 5)、黒(d, 5), (e, 4)に配置される。初期配置の中の最も左上の升を(0, 0)とし、右か下に進むほど値が増えるとすると、初期配置は、白(0, 0), (1, 1)、黒(0, 1), (1, 0)となる。同じ色の石は斜め以外の隣には並ばないとわかる。この点を一般化する。


 m次元n路盤の場合、初期配置の中の最も(m次元的に)左上の升を(0, 0,,, 0)(全部ゼロ)とし、(m次元的に)右か下に進むほど値が増えるとする。m次元における、ある升にとって斜めでない隣の升とは、ある升の座標の1つだけの要素の値が1だけ揃って増、または1だけ揃って減した升。すると、(1, 0, 0,,, 0), (0, 1, 0,,, 0),,, (0, 0,,, 0,1)は黒。という具合にすると、隣の隣は同色なので、1が奇数個あれば黒。1が偶数個あれば白。これで白と黒は同数になるんだろう。そして、同色で隣り合わないだろう。多分。ならないなら教えて下さい。あと、より厳密な表現に変えられるならそうして欲しい。


(2015/9/29/22:46)修正しました
(2015/10/01/22:58)さらに修正
(2015/10/09/00:15)さらに修正