【C?】最初の言語に何を選ぶか【Haskell?】at TECH
【C?】最初の言語に何を選ぶか【Haskell?】 - 暇つぶし2ch254:デフォルトの名無しさん
21/10/23 01:18:42.34 rv17aNSC.net
>>250
その「Make 10」パズルを逆ポーランド記法を計算する関数で解くには
総当りで逆ポーランド記法を生成して計算して10になるのを探せばいいんですよね?
加減乗除は重複組み合わせ(combinationsWithReplacement)で使ってよくて
それと数字を合わせて順列(permutations)を生成すれば総当りになりますね
結果10以外にも使えるように引数answerと数字も任意の長さで引数numberListとして
const { combinationsWithReplacement, permutations } = require('iterator-tools');
function make10(answer, numberList) {
 const opList = ['+', '-', '*', '/'];
 for (const ops of combinationsWithReplacement(opList, numberList.length - 1)) {
  const list = numberList.concat(ops);
  for (const rpn of permutations(list)) {
    const val = execRPN(rpn);
    if (val === answer) {
     return rpn;
    }
  }
 }
 return null;
}
これも順列組み合わせを習った小学生ならすぐ作れそう


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch