Git Product home page Git Product logo

yukicoder-problems's Introduction

yukicoder-problems

Build and Deploy

Overview

yukicoder problems is a web application, to manage competitive programming problems on yukicoder, written in TypeScript with React.

Some components were constructed based on corresponding components of AtCoderProblems.

This application uses yukicoder API.

Install required packages

yarn

Start the web application on your local

yarn start

Build optimized files for distribution

yarn build

Prettify codes

yarn prettier

Check code format

yarn lint

Fix code format

yarn lint:fix

Favicon

Favicons were generated with The best Favicon Generator (completely free) | Favicon.io.

Links

yukicoder-problems's People

Contributors

dependabot[bot] avatar iilj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

yukicoder-problems's Issues

TablePage: Open Contest Tab

  • HackerRank から移植された問題用にタブを作る
  • Open Contest 自体の情報は API から取れないので,自前で用意して結合する

TablePage: コンテスト外問題用タブ

TablePage: regular→long の動線が非自明

問題の概要

  • 現状,7問以上構成の yukicoder contest XXX が開催されると, yukicoder contest (long) タブ内に表示する仕様としているが,この仕様がわかりづらいとの声がある

問題の詳細・原因

  • TablePage を開いたユーザは, YukicoderRegularTable に yukicoder contest の全問題が含まれていることを期待する可能性がある
    • 一部コンテストが別タブに移動していることの説明が特にないことも一因
    • 特に7問以上構成の yukicoder contest 終了直後,最新のコンテストが YukicoderRegularTable に含まれない(longタブ内に表示している)状態になるので,戸惑うユーザもいる
  • Writer/Tester 目線では,問題が YukicoderRegularTable に表示されたほうが動線の確保が容易で好ましいと考えられる
  • タブを操作して (long) タブへ移動する動線が頼りないのは,各タブ内のコンテンツ量の差も手伝っているかもしれない
    • AtCoder Problems では ABC/ARC/AGC/... と多くのタブを用意しているが,その動線は問題となっていない.ユーザは「AGCの問題を見よう」というように目的を持ってタブを移動すると考えられる.
    • (regular) タブから (long) タブへの移動は,上述の例ほど明確な目的を持って行われるとは考えづらい
  • 今後,仮に7問以上構成のコンテスト割合が増えれば,コンテンツ量の相対的な差は小さくなる
    • ...ので,その時になって (long) タブが市民権を得るまで,この問題を保留するという選択肢もある

UserPage: Level の小数対応

yukicoder 公式がユーザーLv. の小数点以下2桁まで+あと★いくつで次のレベルに上がるかを表示するようになったので,追従したほうがユーザ的に嬉しいかもしれない

yukicoder 上での表示例

ユーザーLv. 6.39 (レベルアップまで★ * 17)

TablePage: 問題ごとの詳細 UI

  • API から,単一問題ごとのリクエストでは統計情報が取れるようになった
  • これを上手く使えたら嬉しいので,問題ごとに詳細を出すための UI を用意できたらする

TablePage: Beginners After Typhoon Contest#01 (Open) 追加

ListPage: 一部のコンテスト外問題のモーダル表示がおかしい

image

  • Fastest Submission が提出 #0 になる
    • これは実際には存在せず 404 が返ってくることがわかっているので, 0 なら不採用とする
  • Shortest, Pure Shortest が空欄になる
    • RankingMergedProblem にはショートコード提出情報が含まれないが,問題ごとのリクエストに対するレスポンスには提出IDが含まれているので,リンクは表示可能
    • RankingMergedProblem に情報があったらそれを使う,なかったら問題単体リクエストで得た情報でリンクを表示する

interfaces/Problem: ProblemType の追加

API のアップデートにより未証明問題の分類が登場したため,これに対応する必要がある.

問題タイプ 0は通常問題,1は教育的問題,2はスコア形式問題 3はネタ問題,4は未証明問題

難易度表記について

現状は☆1~☆6までの11段階にAtCの11色が振り分けられているが,実際の難易度対応としては
y a
1.0 easy(黒)
1.5 灰
2.0 茶
2.5 緑
3.0 水
3.5 青
4.0 黄
4.5 橙
5.0 赤
5.5 銀冠
6.0 金冠
な気がしていて(yukicoderのhelp参照),難易度対応を1段階ずらした方が(大まかな難易度が分かり易いので)いいのでないか
という提案です.

UserPage ほか: ProblemType 対応

Swagger UI

ProblemType | integer
問題タイプ 0は通常問題,1は教育的問題,2はスコア形式問題 3はネタ問題

区分の数字と問題タイプとの対応が判明したので,これに即した表示にする

表示の高速化

  • YukicoderRegularTable など表示がもたつくので,高速化したい
  • fetch はそれほど時間がかかっていないが,その後のマージに時間がかかっている模様
    • このあたりをうまくやる

UserPage: Streak Sum の表示追加

  • AtCoder Problems に Streak Sum なる概念が登場した
  • 同様のものを表示することで,次のような効果があるかもしれない
    • 継続的にACを重ねているかどうかについて,より実情に即した情報を提示できる
    • Streak を切らしたときの精神的ダメージが軽減できる

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.