Skip to content

Instantly share code, notes, and snippets.

@omas-public
Last active October 19, 2022 11:38
Show Gist options
  • Save omas-public/e116e198595df733a42d831285a7fb9e to your computer and use it in GitHub Desktop.
Save omas-public/e116e198595df733a42d831285a7fb9e to your computer and use it in GitHub Desktop.

if文を使用

(() => {

  // define function
  const fn = (s) => {
    // ここに処理を書く
    if (s === 'baseball') { return 9 }

    if (s === 'soccer') {
      return 11
    }
    if (s === 'rugby') {
      return 15
    }
    if (s === 'basketball') {
      return 5
    }
    if (s === 'volleyball') {
      return 6
    }
    return undefined
  }

  // declare varriable

  // 入力値を取得
  const s = inputs().readStream()

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(s)

  // 表示
  display(identity)(result)

})()

Objectを辞書的に使う

(() => {

  // define function
  const fn = dic => s => {
    // ここに処理を書く
    return dic[s] ?? undefined
  }
  // declare varriable
  const dic = {
    baseball: 9,
    soccer: 11,
    rugby: 15,
    basketball: 5,
    volleyball: 6
  }
  // 入力値を取得
  const s = inputs().readStream()

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(dic)(s)

  // 表示
  display(identity)(result)

})()
// 即時実行関数(main)
(() => {

  // define function
  const fn = (h) => {
    // ここに処理を書く
    if (h <= 6) return 'no break'
    return (h < 8) ? '45 min' : '60 min' 
  }

  // declare varriable

  // 入力値を取得
  const h = inputs().readStream(Number)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(h)

  // 表示
  display(identity)(result)

})()
// 即時実行関数(main)
(() => {

  // define function
  const fn = (v, d) => {
    // ここに処理を書く
    return Math.trunc(d / v)
  }

  // declare varriable

  // 入力値を取得
  const [v, d] = inputs().readCols(Number)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(v, d)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (matrix) => {
    // ここに処理を書く
    return [...matrix].sort(([a], [b]) => a - b)
  }

  // declare varriable

  // 入力値を取得
  const matrix = inputs().readMatrix().slice(1)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(matrix)

  // 表示
  display(join('\n'))(result.map(join(' ')))

})()
(() => {

  // define function
  const fn = (n) => {
    // ここに処理を書く

    return n
  }

  // declare varriable
  const dic = {
    1: white,
    2: black,
    3: red,
    4: blue,
    5: yellow,
    6: green,
    7: orange,
    8: pink,
    9: purple
  }
  // 入力値を取得
  const n = inputs().readStream(Number)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(n)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (f1, f2) => {
    // ここに処理を書く
    const [t1, t2] = [f1, f2].map(([n]) => parseInt(n))
    return (t1 < t2) ? 'up' : 'down'
  }

  // declare varriable
  
  // 入力値を取得
  const [f1, f2] = inputs().readCols()

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(f1, f2)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (e1, e2) => {
    // ここに処理を書く
    return ([e1, e2].includes(0))
      ? 'invalid'
      : e1 * e2
  }

  // declare varriable

  // 入力値を取得
  const [e1, e2] = inputs().readCols(Number)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(e1, e2)

  // 表示
  display(identity)(result)

})()
// 即時実行関数(main)
(() => {

  // define function
  const fn = (matrix) => {
    // ここに処理を書く
    const total = matrix.map(([_, p]) => p)
      .map(Number).reduce((a, b) => a + b)
    const buyPants = matrix.map(([c]) => c).includes('pants')
    return (buyPants && total >= 2000)
      ? total - 500
      : total
  }

  // declare varriable

  // 入力値を取得
  const matrix = inputs().readMatrix().slice(1)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(matrix)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (s) => {
    // ここに処理を書く
    return s.split('').reverse().join('')
    // return join('')(split('')(s).reverse())
  }

  // declare varriable

  // 入力値を取得
  const s = inputs().readStream()

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(s)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (s1, s2) => {
    // ここに処理を書く
    return [s1, s2].join('')
  }

  // declare varriable

  // 入力値を取得
  const [s1, s2] = inputs().readCols()

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(s)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (s) => {
    // ここに処理を書く
    return s.toLowerCase()
  }

  // declare varriable

  // 入力値を取得
  const s = inputs().readStream()

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(s)

  // 表示
  display(identity)(result)

})()
(() => {

  // define function
  const fn = (matrix) => {
    // ここに処理を書く
    const mapfun = (caps = false) => array => {

      if (array[0] === 'capslock') {
        caps = !caps
        return undefined
      }

      if (array[0] === 'shift') {
        return array[1].toUppercase()
      }

      return caps ? array[0].toUpperCase() : array[0]

    }
    return [...matrix].map(mapfun()).filter(identity).join('')
  }

  // declare varriable

  // 入力値を取得
  const matrix = inputs().readMatrix().slice(1)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(matrix)

  // 表示
  display(identity)(result)

})()

この問題はアルゴリズムを勉強していないとかなり難しい,今は解けなくて良い

参考:bit全探索

// 即時実行関数(main)
(() => {

  // define function
  const bitPattern = array => {
    const n = array.length
    const patterns = []
    for (let bit = 0; bit < (1 << n); bit++) {
      const pattern = []
      for (let i = 0; i < n; i++) {
        if (bit & (1 << i)) {
          pattern.push(array[i])
        }
      }
      patterns.push(pattern)
    }

    return patterns
      .filter(array => array.length > 0)
      .filter(array => array.reduce((a, b) => a + b, 0) === 777)
  }

  const fn = (array) => {
    // ここに処理を書く
    const patterns = bitPattern(array
      .filter(v => v <= 777)
      .sort((a, b) => a - b)
    )
    switch (patterns.length) {
      case 0: return 'no answer'
      case 1: return patterns[0].join(' ')
      default: return 'multiple answers'
    }
  }

  // declare varriable

  // 入力値を取得
  const array = inputs().readRows(Number).slice(1)

  // 取得した値を関数に渡して結果をresultに代入
  const result = fn(array)

  // 表示
  display(identity)(result)

})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment