C#
atcoder.jp System.Numerics.BigInteger を使えば N が最大値 100000 でも計算できるけど、時間がかかりすぎて、とても2秒以内には終わらない。 最後に剰余を計算せずとも、毎回計算しても大丈夫だった。 using System; namespace ABC055B { class Program {…
atcoder.jp スイッチを離した時間の早い方と、スイッチを押し始めた時間の遅い方の差を求めればいい。差がマイナスなら、同時に押している時間はない。 using System; namespace ABC070B { class Program { static void Main(string[] args) { var input = C…
atcoder.jp 左上から順番に探索していって、# のマスのとき「上下左右に隣接するマスのうちどれか1つでも # があるか」をチェックする。# があれば探索を続け、無ければ目標を達成できないので探索終了。 using System; using System.Collections.Generic; …
AtCoder Beginners Selection は全部解いたので、次は AtCoder Beginner Contest の過去問を解くことにした。 atcoder.jp 左上から順に全探索しつつ、現在のマスが . だったら、接しているマスに # が何個あるかを数えて出力していく。 using System; using …
atcoder.jp 次の目的地に向かって進んでいって、早く着きそうだったら周辺で時間を潰し、最終的に時間ぴったりに着けば OK。 using System; namespace ABC086C { class Program { static void Main(string[] args) { var n = int.Parse(Console.ReadLine());…
atcoder.jp 後ろから比較すれば、dream は確実に dream だし、erase は確実に erase。 比較する範囲を前にスライドしていく際には、ReadOnlySpan<char> を使った。 余計な string のインスタンスが生成されるのを回避し、速度と読みやすさを両立できたのでは。 usi</char>…
atcoder.jp x + y + z = N なので x と y から z は決まる。z でのループは不要。x と y の二重ループで探索すればいい。 using System; namespace ABC085C { class Program { static void Main(string[] args) { var input = Console.ReadLine().Split(' ')…
atcoder.jp 実は並び替える必要はなく、重複している値を取り除いて残ったものを数えればいい。 LINQ 便利。 using System; using System.Linq; namespace ABC085B { class Program { static void Main(string[] args) { var n = int.Parse(Console.ReadLine…
atcoder.jp 降順にソートして、先頭から 1 つずつ Alice と Bob 交互に割り振っていけばいい。 using System; using System.Linq; namespace ABC088B { class Program { static void Main(string[] args) { _ = int.Parse(Console.ReadLine()); var a = Cons…
atcoder.jp 各桁の和を求める部分、とくに各桁の値を取り出すのに悩んだ。 「10 で割った余りを求める→10で割る」を繰り返す泥臭い方法になったけど、 もっとスマートに書けないものかな。 using System; namespace ABC083B { class Program { static void M…
atcoder.jp 0 <= A, B, C <= 50 なので、所持している硬貨の枚数の組み合わせは最大 125000 通り。 組み合わせ全パターン計算して X と一致するものを数えても、2 秒以内で余裕で間に合う。 using System; namespace ABC087B { class Program { static void …
atcoder.jp 配列の中身を全部 2 で割り切れた回数をカウントすればいいな。2 で割り切れなかったら、結果を出力して即終了で。 using System; using System.Linq; namespace ABC081B { class Program { static void Main(string[] args) { var n = int.Parse…
atcoder.jp 要は、入力された文字列の中に '1' が何個出現するかを数えればいいわけだ。 using System; using System.Linq; namespace ABC081A { class Program { static void Main(string[] args) { var answer = Console.ReadLine().Count(x => x == '1');…
昨日から始めた AtCoder。まずは AtCoder Beginners Selection を上から順に解いていく。 お次はこれ。 atcoder.jp 偶数かどうかを判定するには、2 で割った余りが 0 かどうかを見ればいい。今回は特に変わった解き方をせずシンプルに。 using System; names…
ブログに書くネタ&プログラミング面接対策として、AtCoder を始めてみた。 まずは入門である AtCoder Beginners Selection からコツコツやっていく。 atcoder.jp b と c の代入に、あえての Deconstruct。 ただ単に Deconstruct を使ってみたかっただけ。 …
はじめに ドメイン駆動設計のパターンの一つである値オブジェクトを実践するようになってから、ASP.NET Core Identity でユーザーの ID の型 が string なことに恐怖を感じるようになった。ユーザー ID を表す値オブジェクトじゃないと安心してコード書けな…
はじめに HttpClient を使って http で Authorization ヘッダー付きのリクエストを送信し、https にリダイレクトされると、https のリクエストには Authorization ヘッダーが付かない。 以下、実験コード。 Web API HTTP リクエストのヘッダーをログに出力し…
はじめに ASP.NET Core で JWT Bearer 認証を使うときに Startup.ConfigureServices で呼び出す AddJwtBearer は、 任意の authenticationScheme を指定できる。 となると、authenticationScheme さえ重複しなければ複数回呼び出しても問題ない、はず。 気に…
はじめに ASP.NET Core で実装した Web API の前段にリバースプロキシを置く必要がありそう。 しかも、そのリバースプロキシはデータベースにある情報を使ってリクエストの振り分けを行わなければならないため、 プログラマブルなリバースプロキシが求められ…
はじめに 大人の事情によって .NET Framework 4.8 で動かさざるをえない ASP.NET Core 2.2 製 Web API を、OAuth2.0 か OpenID Connect に対応させる必要があり、IdentityServer4 を使う予定でいた。 その IdentityServer4 は 5/1 時点で v3.1.3 が最新。も…
Microsoft.Data.Sqlite は、Xamarin で SQLite を使うときの定番になっている sqlite-net-pcl と同じく、SQLitePCL.raw に依存している。 sqlite-net-pcl が Xamarin.iOS で利用できるということは、Microsoft.Data.Sqlite も利用できるに違いない。 サンプ…
はじめに protobuf-net.Grpc を使ってコードファーストに ASP.NET Core gRPC サービスを実装する場合でも、 ASP.NET Core の JWT Bearer 認証ミドルウェアを使うことができそうだ、 というところまで前回確認できた。 tnakamura.hatenablog.com Authorizatio…
はじめに ASP.NET Core gRPC は ASP.NET Core のミドルウェアをサポートしているけど、 protobuf-net.Grpc を使ってコードファーストで実装する場合でも、 JWT Bearer 認証が使えるか試してみた。 Shared プロジェクトを作成 毎度おなじみの、 クライアント…
はじめに WCF では OperationContext の IncomingMessageHeaders と OutgoingMessageHeaders を使って、 カスタムヘッダーをクライアントから送ったり、サーバーから返したりできた。 tnakamura.hatenablog.com gRPC には Metadata という同じような機能があ…
Xamarin.Android で開発している、画面遷移をフラグメントの入れ替えで実装しているアプリで、ActionBar の左上に←(戻る)ボタンを表示できたので方法をメモしておく。 using System; using Android.App; using Android.OS; using Android.Support.V7.App; us…
はじめに ASP.NET Core MVC のモデルバインドで、 JSON をバインドした後にモデルのプロパティの値が null だったとして、 デフォルト値の null なのか、 それともクライアント側から明示的に null を渡されたのか判断したい。 そして、null を設定できるプ…
はじめに IssueHub で使っている自作のライブラリ ReduxSharp。 github.com www.nuget.org すでに GitHub でソースコード、NuGet でパッケージを公開していたんだけど、 紹介記事を書いていなかった。 IssueHub のソースコード公開を機に紹介したいと思う。 …
はじめに 先日、WCF から gRPC に移行するときの手段として、.proto ファイルを書くのではなく、protobuf-net.Grpc を使って C# のコードから gRPC のクライアントとサーバーを動的に生成する方法を紹介した。コードファースト ASP.NET Core gRPC と命名。 t…
はじめに Web サービスが提供する API を使ったクライアントアプリを開発する場合、 API の認証には OAuth を使うことが多い。 アプリで OAuth 対応を行う場合、肝心の認証部分は WebView を使った埋め込みブラウザを使うよりは、 SFSafariViewController や…
この記事は、Xamarin Advent Calendar 2019 の三日目の記事です。 qiita.com OAuth で使う ClientId と ClientSecret の管理で悩み中。 ハードコードしてはダメだし、Git リポジトリにコミットするのもダメ。 Xamarin.Android なら AndroidManifest.xml plac…