filterをやろう

プログラミングの鍵は条件分岐
[b][size=150][b][size=150]このワークシートは[url=https://www.geogebra.org/m/twxxx3yq]Math by Code[/url]の一部です。[br][/size][/b][br]<filterをやろう>[br][/size][/b][br]前回のmapでは、リストをmapを使って編集することを学んだね。[br]今回はfilterを使って、リストから制限リストを作ってみよう。[br][br][b][color=#0000ff]map[/color][/b](x->f(x),リスト)などとかいて、要素xからf(x)のリストをマッピングできる。[br][color=#0000ff][b]filter[/b][/color](x->expr(x),リスト)などとかいて、要素xのうちexpr(x)が成り立つ要素だけリストができる。[br][br]前回は乱数の2次元配列を作って50行5列の得点表を作り、[br]平均点以上なら+、 未満ならーにマッピングしたね。[br][br]今回は乱数の2次元配列を作って50行5列の得点表を作り、[br][color=#45818e][b][size=200]5科目のすべて、平均以上か、平均未満に偏るデータだけ抜き差し出そう。[br][/size][/b][/color][br]mapを使って+ーのリストのリストは作れる。[br]filterを使って、+が5個ならぶデータかーが5個並ぶデータを抜き出せばよいね。[br]geogebraではKeepIf( <条件>, <リスト> ),KeepIf( <条件>, <変数>, <リスト> )を使おう。[br][br]juliaの場合[br]#============================================[br][size=150]num = 50[br]kamoku = 5[br]data=[[rand(0:100) for x in 1:kamoku] for y in 1:num][br]ave= sum([sum(data[y]) for y in 1:num])/(num*kamoku)[br][color=#0000ff]updown(x) = float(x) >= ave ? 1 : -1[br]res = [ map(x -> updown(x) , data[y]) for y in 1:num][br]judge= [sum(res[y]) for y in 1:num][br]filtered=filter(n -> n == 5 || n == -5, judge) [br]println(judge)[br]println(filtered)[br][/color][/size][br]#============================================[br][color=#38761d][OUT]例[br][-5, 1, 1, 1, -3, 1, 1, -1, 3, -1, 1, 5, -5, -1, 5, 1, -1, 1, 3, -5, 1, -3, 1, 1, -3, 3, 3, -1, 1, -1, 3, -1, 1, 3, -1, -1, -1, 1, -1, -1, 3, -3, -3, 1, 3, -1, -3, 3, 3, 3][br][-5, 5, -5, 5, -5][br][/color][br]geogebra[br]#============================================[br][color=#0000ff][br]num = 50[br]kamoku = 5[br]data=Sequence(Sequence(RandomBetween(0,100),n,1,kamoku),m,1,num)[br]ave=((Sum(Sequence(Sum(data(n)),n,1,num)))/(num kamoku))[br]rs=Sequence(Sequence(If(Element(data,m,n)≥ave,1,-1),n,1,kamoku),m,1,num)[br]judge=Sequence(Sum(Element(rs,n)),n,1,num)[br][/color]filtered=keepIf(n == 5 || n == -5, n, judge) [br][br]#============================================[br][br][br][br][br]
mapを利用して、リストにフィルターをかけてみよう
[color=#134f5c][b][u][size=150]質問:0点から100点までありうる5科目の得点データがあるとき、1科目でも100点か0点を取った人を抜き出したい。どうしたらよいだろうか。[/size][/u][/b][/color]

Information: filterをやろう