パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

C#の配列とソートに はまった話

2020-01-31 | プログラムをマスター計画2020

月曜の丑三つ時にまたソースバトルに挑んでみました。

 

今回はC# 

準備を少ししてます。(JavaScriptの問題の時にネットでググった言語のちょっとした変換などを事前調査)

 

配列とソートもう少し下調べしておくべきでした。

 

参考になりそうな問題と 他の人の解答、Python3で解いたものを残しておきます。

 

問題 

スペース区切りの数列が与えられる。

数列の中の奇数を昇順にならべ、その後に数列の偶数を降順にならべたものをスペースを挟んで表示。

(同じ数字があれば1つだけ表示)

 

(実際の問題は、最初の数列と解答の数列から法則性を考えるという一手間があります)

 

 

 

c#は方法がいろいろありすぎて、調べるのが大変なのと

技を複数重ねる際に、この個々の方法で組み合わせできないこともあったりして、

その判別をしている段階で時間切れになりました。

 

Python3で作成したもの

 

3位の方の解答(一部変更)

 

20位の方の解答(一部変更)

もう1人12位の解き方も別のアプローチだったのですが、

文字列のままソートしてたため1 10 2 3 4 ...と並んでしまってタイムアップのようでした。

 

C#の参考ソースはいずれもLinqというSQLをC#に盛り込んだような技を使っています。

SQLの知識があれば、Linqの理解も速いかもしれません。

 

=> c# でググったマイクロソフトの説明サイト

ラムダ演算子の説明なのですがLinqの参考にもなりました。

https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/lambda-operator


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。