[過去ログ] スレ立てるまでもない質問はここで 164匹目 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
854
(5): デフォルトの名無しさん [sage] 2023/06/17(土) 10:17:06.53 ID:NJVRNPyW(2/5) AAS
出題者側としてはコピペ防止のため問題を変形させている
例えばFizzBuzzならこうしてみる
「FizzBuzzを返す関数を書いてください。
プログラミング言語は自由です。
関数の仕様は引数として正の整数を10進数で表した文字列が来ます。
それ以外の文字列は来ないのでエラー処理は不要です。
ただし文字列の長さは1MBが来ても処理できるようにしてくたさい。
文字列の仕様は各言語の標準的なものから自由に選んでも構いません。
関数が返すのは文字列でFizzやBuzz等でない場合はそのまま返せばよいです。
速く動作することを優先としますがSIMDやGPUや並列化の対応は不要です。」
どうぞ
855
(3): デフォルトの名無しさん [sage] 2023/06/17(土) 10:50:18.42 ID:KfWQWP0B(2/4) AAS
>>854
それができるのは数学ができるやつだけだろ
向いてないやつを弾くテストじゃなく文系を弾くテストになってるぞ
各桁の和が3の倍数なら3の倍数になる法則と剰余の和の剰余は和の剰余になるという法則と1の位が0か5なら5の倍数という法則さえ知ってれば解けるが知らなきゃ解けん
864
(1): デフォルトの名無しさん [sage] 2023/06/17(土) 11:22:54.16 ID:JEt1hz4l(1) AAS
>>854
いい問題だね
886: デフォルトの名無しさん [sage] 2023/06/17(土) 23:37:08.97 ID:NJVRNPyW(4/5) AAS
採点基準としては>>854で速く動作することを優先と明記したので
多倍長整数の使用は不合格とは言わないまでも追加点無しといったところかな

その部分以外に元のFizzBuzz問題でも同じ話だけど細かい採点は多数
例えばifが3つ「15の倍数か?」「5の倍数か?」「3の倍数か?」と並列に並ぶ形をとる人がなぜか多くて
どれにも当てはまらない過半数のケースで3回もif判定するから損で正解はif判定を常に2回に抑えられるよね
3回の場合でも「x % 15」などを計算しちゃうのも損で3の倍数か及び5倍数かの情報を使うべきだよね
とはいえ「(x % 3 == 0) && (x % 5 == 0)」等としちゃうとその後に2度目の「x % 3」を計算する羽目になり損だよね
いずれにせよ可読性も兼ねてis_fizzやis_buzzといった変数にブール値を代入するのも必須かな

といった感じで細かい採点基準が多数あるのを恐れてか
コードを出す人が少ないのが残念ですね
899: デフォルトの名無しさん [sage] 2023/06/18(日) 08:17:01.17 ID:/TMQvlLx(3/3) AAS
実在する文字コードを前提としてはいけないならば
>>896
896(2): デフォルトの名無しさん [sage] 2023/06/18(日) 02:35:29.36 ID:w5e3CbrF(1/5) AAS
正解はこちら
str.sum(c => c - '0') % 3
のc-'0'こそ失格となる
その式は'0'から'9'の順に並び1ずつ増えることを前提としている

一方で元の問題>>854を見ると
「文字列の仕様は各言語の標準的なものから自由に選んでも構いません。」
つまりASCIIやUTF8を前提としてもよい
したがってそれらの文字コードを使うプログラムでは'0'を0x30とみなして処理することができる

結論
0x30は3の倍数なのでその引き算は必要ない
921: デフォルトの名無しさん [sage] 2023/06/19(月) 09:23:37.86 ID:T5Ntw3R8(1) AAS
>>854の言語自由ってのは自分の手に馴染んだ言語を使って回答しろって意味じゃないのか
処理の速い言語を選ぶことも採点基準のうちってこと?
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s