1
anonymous 藤井聡太二冠の30連勝確率と3連敗確率
TypeScript
/**
 * 藤井二冠の3連敗と30連勝の頻度を計算するプログラム
 */

/** 勝利確率 */
const winRate = 0.84;
/** 何連勝からカウントするか */
const winBorder = 30;
/** 何連敗からカウントするか */
const loseBorder = -3;

/** 試行回数(100億回) */
let count = 10000000000;

/** 現在の30連勝数 */
let win30Count = 0;
/** 現在の3連敗数 */
let lose3Count = 0;

/** 処理部分 */
{
  /** 現在の連勝、連敗数(マイナスが連敗) */
  let winLose = 0;

  /** 100億対局実行しておく(最後の1局はカウントされないが面倒なので割愛) */
  while (count > 0) {
    /** 勝敗判定 */
    const result: boolean = Math.random() < winRate;

    /** 勝利していた場合の処理  */
    if (result) {
      // 現在の連敗数をチェック
      // 3連敗以上だった場合には、3連敗数を増やしておく
      if (winLose <= loseBorder) {
        // 3連敗数を増やす
        lose3Count += 1;
      }

      // 連勝数を増やす
      // 既に連勝中だった場合には連勝数をインクリメント
      // 連敗中だった場合には連勝数を1にしておく
      winLose = winLose >= 1 ? winLose + 1 : 1;
    } else {
      // 敗北していた場合の処理

      // 現在の連勝数をチェック
      // 30連勝以上だった場合には、30連勝数を増やしておく
      if (winLose >= winBorder) {
        // 3連敗数を増やす
        win30Count += 1;
      }

      // 連勝数を増やす
      // 既に連勝中だった場合には連勝数をインクリメント
      // 連敗中だった場合には連勝数を1にしておく
      winLose = winLose <= -1 ? winLose - 1 : -1;
    }

    /** 残りの試行回数を減らしておく */
    count -= 1;

    if (count === 0) {
      /**
       * 結果の出力
       */

      console.log(`30連勝数:${win30Count}`);
      console.log(`3連敗数:${lose3Count}`);
      console.log(winLose);
    }
  }
}
anonymous No title
TypeScript
type Welp<T> = T & { welp: Welp<T> }
anonymous No title
TypeScript
export class Test {
  name: string; 
  toString(input: string): string {
    return input;
  }
}
monkukui No title
TypeScript
/// Questions.vue
<template>
  <div class="pagi-nation">
    <p>curPageId: {{curPageId}}</p>
    <p>totalItemNum: {{totalItemNum}}</p>

    <div v-for="id in questionsList">
      <div class="box">
        <p>title {{id}}</p>
        <p>description {{id}}</p>
      </div>
    </div>
  </div>
</template>

<script lang="ts">
import { Component, Prop, Vue, Emit, Watch} from 'vue-property-decorator';

@Component
export default class PagiNation extends Vue {

  @Prop()
  private curPageId!: number; // 現在のページ番号
  @Prop()
  private totalItemNum!: number; // アイテムの合計数

  private questionsList: number[] = [];
  
  private getQuestionsList(): void {
    this.questionsList = [];
    for(let i: number = 1; i <= 10; i++) {
      this.questionsList.push(i + (this.curPageId - 1) * 10);
    }
  };
  public mounted(): void {
    this.getQuestionsList();
  };

  @Watch('curPageId')
  onCurPageIdChanged(): void {
    this.getQuestionsList();
  }

}
</script>

<style scoped>
.box {
  padding: 0.5em 1em;
  margin: 2em 0;
  font-weight: bold;
  color: #6091d3;/*文字色*/
  background: #FFF;
  border: solid 3px #6091d3;/*線*/
  border-radius: 10px;/*角の丸み*/
}
.box p {
  margin: 0; 
  padding: 0;
}
</style>
anonymous No title
TypeScript
type NodeType = VNode | string | number
type Attributes = {[key: string]: string | Function }

export interface View<State, Actions> {
  (state: State, actions: Actions): VNode;
}

/**
 * 仮想DOM
 */
export interface VNode {
  nodeName: keyof ElementTagNameMap
  attributes: Attributes
  children: NodeType[]
}

/**
 * 仮想DOMを生成
 */
export function h(
  nodeName: keyof ElementTagNameMap,
  attributes: Attributes,
  ...children: NodeType[]
): VNode {
  return { nodeName, attributes, children };
}

/**
 * リアルDOMを生成
 */
export function createElement(node: NodeType): HTMLElement | Text {
  if (!isVNode(node)) {
    return document.createTextNode(node.toString());
  }

  const el = document.createElement(node.nodeName)
}
Don't you submit code?
Submit
1