プログラミングコンテストに初参加した話~後編~
前回(↓)の続きです。
無事に第1問を解き終わった僕であったが、第2問において驚異のガイジ力(ガイジリョク)を見せつけるのであった…
第2問
入力3つ(a,b,c)あったときにaからbまでの間にcで割り切れる数いくつあるか出力してや。
例:入力"10 15 5" 出力"2"
問題文を読まないガイジ僕
「せや!while文でぶん回して商を1つづつ出力したろ!彡(^)(^)」
※入力が"10 15 5"だったら"2 3"になると思ってた
その結果爆誕したのがこちらのプログラム
内容としては入力で受け取った数字3つを格納し、while文で回して割り切れたら出力、Aを1足す、という感じ。
もちろん不正解である。
そしてこのアホすぎる間違いに気づかないまま時間は刻々と過ぎてゆき
2016/12/04 PM10:40コンテスト終了
コンテスト終了後、問題文を読み返す僕「なんでこれ出力こうなるんやろか(例を見ながら)…アッ(逝去)」
こうしてデビュー戦をなんとか致命傷で済ませた僕は復習を開始、
こんなプログラムが出来上がった。
提出(終わった後でも評価してもらうことは可能)したところ、答え自体はあっていたが実行時間の制限に引っかかってしまっていた模様。
特にnumとAを足し算していくあたり頭悪い。
確かに"走れ低速の Python華撃団"(©️ゲキテイ&先輩)と言われるだけはある。
※実装の仕方が悪いだけでPython君は何も悪くないことが後に判明。
その後、解説を確認。
f(n)を0からnまでの中で、割り切れる数の個数と設定すると、f(B)-f(A-1)で書けるらしい。
ただし、A=0のときはf(-1)になるので注意な^^。とのこと。
最終的に次のようになった。
このプログラムだとバッチリ実行時間制限未満で動いた。
初出場でしたが頭柔らかくなる感じがMAXでスンゴイ(ボキャ貧)
こんな感じで初心者でも楽しめるプログラミングコンテストでした。
定期的に開催されてるっぽいのでまた参加してみたいと思います。
他の問題は割愛するので興味ある人は検索してみたりしてね。
終わり。
プログラミングコンテストに初参加した話~前編~
こんばんは、酒の勢いに任せて記事を書いているeiki1253です。
今回はAtCoderで開催されていたAtCoder Beginner Contest 048(以下、ABC)なるものに参加してみました。
発端は先日、Twitterで「プログラミングコンテストにとりあえず参加してみたら?(要約)」と言われたこと。
これまでは「プログラミングコンテストってガチの人(ガチプロは人外)だけやってるやつでしょ無理や」って思ってたんですけど、
- 参加だけなら無料
- オンラインでできる
- 初心者用のコンテストもある
と聞き急遽エントリーすることに。
練習用コンテストで提出の仕方等を学び、
そして…
2016/12/04 PM9:00開幕
とりあえず言語を選択。
色々な言語が使えるみたいだったけど、そこは僕がこの頃イチオシのPython君で。
問題は大問4個で構成されてました。(問題文は僕のテキトーな解釈で要約してます)
第1問
3つの英単語が間に半角スペースが入った状態で入力されるので、それぞれの頭文字取って出力してくれや。
例:入力"Aaa Bb C" 出力"ABC"
問題文を見て即座に思ったことがある。
「Pythonでスペース区切りの入力ってどうやって拾うんだ」
試合前に試合終了…にはならなかった。
なんとこのABCというコンテスト、試合時間中のインターネットでの検索等は自由なのである。
即"python 入力 スペース区切り"で検索
するとこちらのサイトが出てきた。
…なんと良心的(感動)
そんなこんなで入力の問題を解決。
こんな感じのプログラムに
「3行(実質2行)で終わるなんてホンマ便利やなぁPython君」とか思ってたら
いつの間にか夕食の時間になってたので離脱。
IQ246を視聴するため40分休み(※競技時間は100分)
夕食後に続くのであった。
そしてこの記事も次回へと続くのであった。
ネタバレをしておくとこの2問目までしか到達してません。
AtCoderのサイト↓
Pythonにハマった話
お久しぶりです。
今回は僕のこの頃のイチオシ言語であるPython君について少し語りたいと思います。
まずはハマった経緯についてですが、某授業でPythonを使うことが決定し、試しにクラスタリングをしてみようってところから始まりました。
使ってみたところ型宣言はいらんわセミコロンもいらんわだし、ちょっとぐらいガバったプログラムでも動くし、もうカルチャーショック状態っすよマジで。
(ガバガバすぎるプログラムを書くのは…やめようね!(自戒))
てな感じでテンション爆上がり、一瞬で虜になりましたね。
そしてこのPython君何がすごいかって追加モジュールの多様性がすごい(ボキャ貧)
例えばnumpyっていうモジュール。このモジュールは配列とか行列とかを爆速(当社比)で計算したりできます。
次にscipy。こいつは積分とかフーリエ変換とか様々な機能が使えます。メチャメチャ高機能。
最後にmatplotlib。これは描画をメインとしたモジュールで、ちょっとしたグラフならお茶の子さいさい、逐次描画だってなんのその、って感じで「結果を動画で撮りたい!」とか「結果を綺麗に出力したい!」ってときに使えます。
以上で紹介した3つでもまだまだ氷山の一角…一角どころか一欠片ってレベルで大量のモジュールがあります。
もし実装したい機能があればぜひぜひ試してみてはいかがでしょうか。
というわけでPython君の熱烈なダイレクトマーケティングでした。
おしまい。
第3回・超初心者がLaTeXに挑んだ話 ~図表編~
3回目となりました。今回はレポートを書く際には必要不可欠である、図表の入れ方とかです。
とりあえずこんな感じで書けば動くには動くってやつ↓
いつものテンプレの\begin{document}から\end{document}の間に入れてください。
\maketitle
\section{アッフゥフン}
図\ref{fig:usamin}に現役JKを示す.
\begin{figure}[htbp]
\begin{center}
\includegraphics[width=6.0cm]{age17.jpg}
\caption{17歳現役JK}
\label{fig:usamin} %ラベルで図の参照
\end{center}
\end{figure}\section{しゅがしゅが☆み〜ん}
表\ref{tab:syugamin}にしゅがしゅが☆み〜んの各メンバーを示す.
\begin{table}[htb]
\begin{center}
\caption{BEMYBABY}
\begin{tabular}{|r||clrc|}
\hline
名前 & 年齢 & 誕生日 & 身長 & 血液型 \\
\hline
安部菜々 & 永遠の17歳 & 5月15日 & 146cm & O \\
佐藤心 & 26歳 & 7月22日 & 166cm & AB \\ \hline
\end{tabular}
\label{tab:syugamin} %ラベルで表の(ry
\end{center}
\end{table}
前半について、\begin{figure}から\end{figure}で図を入れられます。センタリングしたかったのでcenterも使ってます。widthで幅指定、同じフォルダの画像はそのまま名前指定で入れられます。あと図番号とかも参照させれば自動で補完してくれます。有能。
後半について、\begin{table}から\end{table}の間に色々書いて表を作ります。Wordに比べたら作るのはめんどい。基本的には"&"で次の列に、"\\"で次の行に、"\hline"で横線です。縦線については\begin{tabular}で指定します。なんというか縦線入れたい場所に"|"を入れてねって感じ。ちなみにrとかcとかlとかはright,center,leftの頭文字なんで次の図で察してください。
ちなみに
「表にいちいち結果打ち込むのめんどくせーーーー!!!!(◜◡‾)何回分結果あると思ってんだ!!!!!」
って人はCのプログラムになるけど、for文とかでぶん回す時に中を
printf("%d & %d & &d \\\\ \n" ,i ,num ,result);
とかってやると結果をコピペでそのまま表にできるのでかなりオススメです。
多分今回までの内容でちょっとしたレベルのレポートなら書けちゃうと思います。なので、(初心者の僕がいうのもアレですが)LaTeX試してみようかな〜って人は是非ともチャレンジしてみてください!
<参考>
第2回・超初心者がLaTeXに挑んだ話 ~数式編~
前回(↓)の続きになります。
前回はプログラムの書き方と数式の書き方について書きましたが、今回はその続きになります。
数式の番号を表示しないやり方と、よく使う数式コマンド的なのの紹介になります。
前回のテンプレの\maketitle〜\end{document}の間に以下のやつを突っ込む。"%"の後ろはコメントアウトなので全て読み飛ばされます。(Cの"//"とか"/*~*/"と同じ)
\section{数式}
\subsection{式番号無し}
\begin{equation}
(x-2)(x-3)=0 \nonumber
\end{equation}\subsection{上付き・下付き}
\begin{align} %alignで複数行の式にできる
x^2-5x+6=0 \\ %"\\"を入れると式を改行
a_{i+2}=a_{i+1}+a_i
\end{align}\subsection{イコールで揃える}
\begin{align}
a_0&=1 \\
a_1&=1 \\
a_2&=a_1+a_0
\end{align}
\subsection{分数}
\begin{equation} %分数を表示できる"\frac{分子}{分母}"
\frac{114}{514}=\frac{57}{257}\end{equation}
そうするとこんな感じの出力になります。
??「ほぼ内容が進展していないが大丈夫か?」
僕「大丈夫じゃない」
てことで次回に続きます。次回は図表編を予定しています。
(独り言)
macユーザーの方は"option"+"¥"で"\"が出力できます。
イコールで揃えるのところ、&マークに揃えられるって描くの忘れてた。
<参考>
超初心者がLaTeXに挑んだ話
今回は割と有用な記事になる気がする(気がするだけ)。
よくわかんないけどとりあえず書ければいいやって人は、最後の方にテンプレだけ見ればおっけーです。
ことの発端は某氏の「卒論ってTeX縛りじゃないの?」という発言。
そういえば研究室先輩が「論文はTeX」的なことを言ってたよなと思い出す。
そこで1つくらいはTeXでレポートを作成しようと思ったが、最後に(というか初めて)触れたのが約2年前なので全然覚えてなかった。
何書けばワカンネ
↓
[latex テンプレ][検索]
そんで見つけたのがこちら。
ここの"標準的なレポート"の部分をパクらせて参考にさせていただいた。
あと、数式とかを組み込みたいって時には
ここを参照。こんな感じで書くと真ん中に式番号がついた形で出力される。
\begin{equation}
x^2 - 6x + 1 = 0
\end{equation}
結果→
そして情報系の人ならレポートにプログラムのソースを貼ることもあるだろうから、そちらについても調べた。
そしたらこんなものが出てきた。
Latexにプログラムっぽいフォントでソースコードを載せる簡単な方法 | しゃこメモ
そんで少し書いてみた。
なにこれめっちゃ便利。
※詳しい仕様とかは[latex linstings]とかで検索かけると色々見つかります。
これまでの内容をまとめてそれっぽいテンプレを作りました。
↓で登録すれば特にインストールとかすることなく文書作成ができます。
- フォントサイズ10.5
- サイズA4用紙用
- "%"はコメントアウトを示す
\setlength{\textheight}{40\baselineskip}
\documentclass[10.5pt,a4paper]{jsarticle}
\usepackage{amsmath,amssymb}
\usepackage{bm}
\usepackage{graphicx}
\usepackage{ascmac}
%
\setlength{\textwidth}{\fullwidth}
\setlength{\textheight}{40\baselineskip}
\addtolength{\textheight}{\topskip}
\setlength{\voffset}{-0.2in}
\setlength{\topmargin}{0pt}
\setlength{\headheight}{0pt}
\setlength{\headsep}{0pt}
\usepackage{listings,jlisting}
\title{タイトル}
\author{著者}
\date{\today}
\begin{document}
\maketitle
\lstset{language=C,frame=single,tabsize=4}
\section{はじめに}\subsection{プログラム}
\begin{lstlisting}[basicstyle=\ttfamily,caption=aaaの表示]
#include<stdio.h>int main(void){
printf("aaa\n");
return 0;
}
\end{lstlisting}
\subsection{数式}
\begin{equation}
x^2 - 6x + 1 = 0
\end{equation}\section{終わり}
終わり
\end{document}
こんな感じに出力されます。
キレイダナー
おしまい。
音ゲー空打ち講座:DDR編
まずは「空打ち」について説明する前に、いくつかの音ゲー用語について説明しておく。
- DDR:Dance Dance Revolutionの略。矢印が判定エァリアに重なるタァーイミングで、左のパァーノゥを踏むッ!!
- 判定エァリア:判定エリア
- タァーイミング:タイミング
- パァーノゥ:パネル
- ◯SP,◯DP:それぞれシングルプレイ(4枚のパァーノゥを使う)とダブルプレイ(8枚のパァーノゥを使う)を示す。◯にはDifficultのD、ExpertのE、ChallengeのCなど、難易度を表すアルファベットが入る。
- ノーツ:音楽に合わせて降ってきたり流れてきたりするアレ。これに合わせて叩いたり踏んだりする。DDRにおいては上下左右の矢印。
ぶっちゃけ大事なのはノーツだけ。
それと
一般用語としての「空打ち」は"コンビニなどのレジを打つフリをすること"を示すらしい。
音ゲーにおいての「空打ち」とは"ノーツの無いところでわざと叩いたり踏んだりすること"だと思っている。(勝手に定義した)
〜こっから本題〜
だいたいの人は「空打ちなんかして意味あるの?」と思っているかもしれない。
もちろんただ適当に空打ちしてるだけではなんの意味もないが、あらかじめ空打ちする場所を決めておけば結構有用なのである。
いくつかの空打ちしやすい例をあげる。
- RЁVOLUTIΦN(CSP)
ボーカルのjunさんが「woh×4」と言ってるところ。
BPM202の8分、同時・単・同時のセットになっている。
BPM200くらいの8分は"ヒャダインのじょーじょーゆーじょー"の「ななななななな!」とほぼ同じ速さなので、普通に踏もうとすると結構厄介。
てことで次みたいにいっつも踏んでます。
一個しか説明してないけど、とりあえずおしまい。
そのうち追記したり他のシリーズ作ったりするかも。