大阪電気通信大学

Python競技プログラミングサイトのコンテンツ作成

Pythonとは

 ライブラリが豊富でありそれを利用することによって汎用性に優れたプログラミング言語である。WebスクレイピングやWebアプリケーション、画像認識やデータベース、ディープランニングや自然言語処理に使われてる。

競技プログラミングサイトとは

 競技プログラミングサイトとは出題された問題を解くプログラムを組み、そのプログラムの作成時間などで競い合うサイトである。様々なプログラマー達のプログラミングスキルを磨いたりプログラミングスキルの証明などのために利用される。

研究概要

 Pythonの独自仕様を使ったコンテンツを取り扱う競技プログラミングサイトが少ないと感じて、Pythonの競技プログラミングサイトのコンテンツ作成の研究に取り掛かった。この研究ではコンテンツ作成にはPython言語の独自仕様を研究する必要があった。本研究では主に四つの内容について触れる。

基礎文法仕様

 Pythonでは一部の機能が他のプログラミング言語と変わってる部分がある。例えば他のプログラミング言語ではブロックの区別を「{}」で区切っている。しかしPythonでは「{}」を使わずインデントでブロックを区別している。

 記号では「_」(アンダーバー)記号の多岐に渡る関数の命名の仕方の違いや「@」記号を使い他のプログラミング言語で言うところの継承のように既存のメソッドに機能の修飾する記号がある。

データ型

 Pythonで主に使われてるデータ型は配列の操作で主に使われるlist(リスト)型、値が変更出来ないため値の格納に使われるtuple(タプル)型、集合を取り扱う為のset(集合)型、引数として指定された値に対応した値を返すdict(辞書)型、文字の羅列であるstr(文字列)型の五つがある。本論文ではこれらのデータ型の使用例、他のデータ型への変換、使われる関数やメソッドの解説をしている。

文字列処理

 本論文ではFizzBuzz問題とトランプからカードを抜き出し、役を作る問題を例に文字列処理の解説をする。Pythonでは文字列操作のためのメソッドの種類が豊富であり上記の問題にて使われている。

1.FizzBuzz問題の回答例

ファイル制御

 Pythonにはsysモジュールを使いファイルを開き書き込めるモジュールがある。本論文ではこのモジュールを使いdatファイルを読み込み問題に沿って指定された文字列をリスト型へ変換している。

冒頭の問題の回答例

2.アイキャッチ画像の回答例

作者プロフィール

HW17A179 松倉 巧

大阪電気通信大学 総合情報学部 デジタルゲーム学科 計測ハードウェア研究室
シンプルでありながらも特色のあるプログラミング言語だと感じ大学からPythonを学び始めた。

コメント


競技プログラミングを搭載したら拠点サイトは面白くなりそうだと論文書いた元高見研の人2021-02-19T12:09:02

拠点サイトというのはとても規模が大きくなりそうだなと興味深く見ております。
こちらの競技プログラミングサイトでは、ベースはアルゴリズムの問題が多くなるのでしょうか?
例えば、Kaggleというデータ分析のサイトがありますがあちらは参加するまでの難易度が高く思うため、こちらの拠点サイト内の競技プログラミングで取り組みやすいものがあればもっとすごいサイトになりそうだなとワクワクしました。

高見研元祖DeepLerningAI作成者2021-02-14T15:01:52

Python競技プログラミングサイトということですが、実際にサイト自体はPythonで作成したのでしょうか?
作成したのであれば、Djangoを使用したのか?それともFlaskを使用したのか?

HW17A1792021-02-14T16:39:47

コメントありがとうございます。競技プログラミングサイトではなく学習サイトとしてなら他の方が作っておられます。またその学習サイトで使われてるのはDjangoもしくはFlaskを使用したのかという問いもこちらでは把握出来ておりません。申し訳ないです。