masarumasuのブログ

現役文系大学生プログラマー。使用言語はJavaとRuby。意識高いことから低いことまでいろいろ書きます。

分散とか標準偏差の計算がめんどくさかったのでJavaで実装してみた。

masarumasuです。

 

最近、コンピューター数学の勉強を始めました。理由としてはこれからのプログラマーにはコンピューターサイエンス周辺の知識が必要とRubyの開発者のまつもとゆきひろ氏が語っていたので、じゃあまずはコンピューター数学始めるかと思い始めました。

 

そして今は統計を学んでいます。そこで分散、標準偏差が出てきたのですが、計算が複雑でいちいち計算するのめんどくさかったんでJavaで実装しました。

 

github.com

このソースコードを公開してます。良かったら使ってみてください。

 

 

J-POPについて語る(1)

masarumasuです。

今回はJ-POPについて語ってみたいと思います。

テーマは「00年代と10年代のJ-POPから見る日本の時代の移り変わりについて」です。

みなさんJ-POPは好きですか?

僕は好きです。洋楽聞こうと思ってもなんだかんだでJ-POP聴いちゃいます。

ただ僕は同世代がよく聴く00年代の曲よりは圧倒的に10年代の曲の方が好きです。

なぜか?

それは10年代の曲の方が個性的な曲が多いからだと思います。

逆に言えば、00年代の曲は没個性的なイメージがあります。

例えば、今思いつく00年代と10年代の曲を挙げてみましょう。

00年代

宇多田ヒカル「Traveling」、モー娘「LOVEマシーン」、オレンジレンジ「花」、GReeeeN「キセキ」、浜崎あゆみ「H」など

10年代

ゲスの極み乙女。「猟奇的なキスを私にして」、SEKAI NO OWARIRPG」、Suchmos「STAY TUNE」、赤い公園「絶対的な関係」、UNISON SQUARE GARDENシュガーソングとビターステップ」など

10年代の曲の方がリズムだったり曲調にひねりが聴いてて面白い曲が多いように感じます。

ここで00年代と10年代の日本社会の違いを分析してみましょう。

まず一番の大きな違いはネット社会の進歩による誰でも発信者になれる構図が生まれたことでしょうか。10年代は00年代のそれと比較しても価値観が多様化しています。

そして近年ではテレビを見ない層が増え、ネットやSNSで主に情報収集する層が増えています。これらのことを踏まえると、DAOKOはその最もたる例です。YouTubeなどのネットで音楽活動を始め、メジャーデビューするまで至ってます。

そして大衆受けする音楽よりは好きな人が好きな音楽が求められている気がします。

これからのJ-POPがますます楽しみです。

 

最強の節約術を考えてみた。(学生向け)

masarumasuです。

今回はプログラミングから離れ、節約術について語りたいと思います。

ただ、節約術と言っても物の使用量を抑えるとか、長持ちさせるみたいな良くある方法はここでは考えないようにします。

ではどんな方法があるのかと思われるかもしれませんが、意外とあります。

1.飲食のバイトをやっている人は

「マジで今月ピンチなんで廃棄食材いただけませんか?」

と言う。会社によってはだめなとこもあるけど、頼み続ければ、もしかしたらいけるかもしれません。ポイントは毎回やると嘘ついてるやろってなるので、間隔をある程度開けることです。

 

2.古着を買う

服が好きな人は古着を買いましょう。意外と値段の割にコスパがいい服が多いです。私のおすすめはZOZOTOWNです。

zozo.jp

私はこれでロングカーディガンを1500円、ボトムスを1000円で買いました。

 

3. 親にねだる

学生だから経済力ないとか言って甘えちゃいましょう。家が農家とかだと野菜とか送ってくれます。自分のとこは農家ではないのでそういうの羨ましいです。

 

4.宅飲みをする

飲み会の出費ってえぐいですよね。一回で3000円とか消えます。しかもそれだけの満足度を得られるかと聞かれたらそうでもない気がします。そこで宅飲みです。鍋とか食えば、美味しいし、楽しめるし、多くても1000円くらいで済みます。しかも、複数人いれば料理も秒速で完成します。

 

こんな感じですね。上手く節約して学生時代を楽しみましょう。

Swift書いてみた。

masarumasuです。

 

唐突ですが、

Swift書いてみました。

JavaRubyの中間みたいな感じがしました。

今回は3の付く数字と3で割り切れる数が「照れ」(自作)を表現する顔文字になるアルゴリズムを書きました。

import Foundation
var i:Int=1
var j:Int=0
while i<61 {
if i%3 == 0{
print("(@>_<@)")
j+=1
}
else if String(i).contains("3"){
print("(@>_<@)")
j+=1
}
else{
print(i)
}
i+=1
}

下のリンクがGIthubになります。

swiftfirst/maincode

Paiza POH8 水着問題解説(Ruby)

masarumasuです。

今回はPaiza POH8 水着問題の解説をしようと思います。使用言語はRubyです。

問題の詳細は下記リンクを参照してください。

 

paiza.jp

このコードが私の回答コードです。

n,m=gets.chomp.split.map(&:to_i)
s=gets.chomp.split("")
t=gets.chomp
i=0
while i<n
t=t.sub(s[i],"")
i+=1
end
puts t.size

 

変更前の文字列と重複する文字を消して、残った要素の長さを出力するといった形です。 

次はJavaで実装してみました。

import java.util.*;

public class Main {
public static void main(String args) {
Scanner sc = new Scanner(System.in);
String a = sc.nextLine();
String A
=a.split(" ");
int N=Integer.parseInt(A[0]);
int M=Integer.parseInt(A[1]);
String s= sc.nextLine();
String S[]=s.split("");
String t= sc.nextLine();
int i=0;
while(i<N){
t=t.replaceFirst(S[i],"");
i++;}
System.out.println(t.length());
}
}

これで正解になるはずだが、最後のテストケースが通らないです。おそらく、timelineexccedです。より高速なアルゴリズムを書く必要があるが現時点で見つけることが出来ません。分かる方いたら教えてください。

もし次の常駐先が女子エンジニアばっかりだったら「緑川つばめを窮地から救え」解説(Ruby)

masarumasuです。

今回はPaizaにて行われているプログラミング問題が解ける「もし次の常駐先が女子エンジニアばっかりだったら」から「緑川つばめを窮地から救え」の解説をしたいと思います。使用言語はRubyです。

 

ほんとは問題を載せたかったけど、正解した後じゃみれないっぽいので回答だけ公開します。問題の概要は「1から10000000までの適当な数値が入力されるから、それを四捨五入を繰り返して、出来るだけ大きな値にして」という感じです。

a = gets.chomp.to_i
if a<5
puts a
elsif a<10
puts "10"
elsif a<100
b=a.round(-1)
c=b.round(-2)
numbers=[a,b,c]
puts numbers.max
elsif a<1000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
numbers=[a,b,c,d]
puts numbers.max
elsif a<10000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
numbers=[a,b,c,d,e]
puts numbers.max
elsif a<100000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
numbers=[a,b,c,d,e,f]
puts numbers.max
elsif a<1000000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
g=f.round(-6)
numbers=[a,b,c,d,e,f,g]
puts numbers.max
elsif a<10000000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
g=f.round(-6)
h=g.round(-7)
numbers=[a,b,c,d,e,f,g,h]
puts numbers.max
end

 

ロジックとしては1から入力された値が取る最大の位まで四捨五入して、その中で一番大きな値を出力するといった感じです。いろいろなパターンを想定して試行錯誤しましたが、結局はシンプルなロジックに落ち着くんやなと思いました。

今回は

if文

roundメソッド

maxメソッド

の知識があれば解けます。

WEARに登録してみた

masarumasuです。

 

私はプログラマー目指して就活活動しているんですけど、こういう感じで勝負していこうかなというイメージがあります。それは技術だけのプログラマーではなく、他方向に知識を持ってて、プログラマーの概念を変える存在になろうということです。あくまで私の主観なのですが、プログラマーはオタク系の人間が多い気がします。彼らは大学や高専卒業時点でかなり高いプログラミングスキルを持ってることが多いのですが、彼らと同じ土俵で勝負しようと思っても追いつくのはかなり先の話になりますし、追いつこうと思ったらかなりの労力を要します。さらにプログラマーって典型的な理系オタクのイメージがかなり強いです。私はこんなイメージを変えたいです。具体的にはアパレル店員っぽい見ためでプログラマーをやり、かつ新企画の立ち上げもどんどん行っていきたいです。そうすれば、プログラマーのイメージが変わりますし、また今までプログラミングに興味がなかった人も興味を持ってくれるようになるかもしれません。

ということでまずはファッションのSNSと言われるWEARに登録してみました。

まだ記事執筆時点で何も上げてないのですが、こんなプログラマーがいるということを知ってもらえたら嬉しいです。

ユーザー検索でmarry0303で検索してみて下さい。

wear.jp