プログラミングパズルとコードゴルフ

プログラミング愛好家やコードゴルファーのためのQ&A

26
楽しい数字ですか?
満足のいく番号(この定義による)は、次のプロセスで渡すことができる番号です(41802000例として使用しましょう)。 末尾の同一番号を区切ります(41802000 => [41802, 000]) 数字の前半をソートし、最大値([41802, 000] => [8, 000]) 最後の要素の長さを取得します。結果の要素AおよびB([8, 000] => A=8, B=3)を呼び出します N B = Aは任意の整数Nですか?(Trueこの例では、2 3 = 8) 入力Trueが次のプロセスからの結果である場合、それは楽しいと見なされます。 あなたの仕事は、整数を取り、心地よい数であるxかどうかを出力することxです。truthyとfalseyの2つの異なる値を出力できますが、回答で使用しているものを明記してください。x少なくとも2桁の異なる数字を持つことが保証されています(たとえば111、無効な入力です)。ほとんどの課題と同様に、あなたは取るかもしれませんx同様に、文字列または数字のリストを使用できます。 これはコードゴルフなので、バイト単位の最短コードが優先されます。 テストケース Input Output 41802000 1 100 1 123456788 0 451111111 0 234543454545444 0 12 1 41902000 0 92599 1

10
テンキーに優しい番号を生成する
キーボードフレンドリー番号の生成に触発された。 バックグラウンド 多くの数字パッドのレイアウトは次のとおりです。 789 456 123 0 数値の近傍を、表示されているテンキー上のそれに隣接するセルのセットとして定義します。たとえば、2の近傍は{1,5,3,0,2}0の近傍です{1,2,0}。テストケースの上に、各番号の近傍のリストがあります。 テンキーのフレンドリ番号を正の整数として定義します。先頭にゼロを付けずに10進数で記述すると、最初の数字を除く各数字は前の数字の近くにあります。 例えば、 7856は8が7の近傍にあり、5は8のネイバーフッドにあり、6は5の近傍にあるため、テンキーに優しい番号です。 2は1の近傍にあり、0は2の近傍にあり、1は0の近傍にあるため、1201はテンキーに優しい数字です。 82でない 2は、8の近傍にないためテンキー優しい数。 802はない 0が8(近隣ラップアラウンドしていない)の近傍ではないので、テンキー優しい番号。 関連OEISシーケンス。この関連シーケンスは、およびの代わりに0隣接するものとしてカウントされるため、異なることに注意してください。712 チャレンジ 正の整数nを指定すると、n-thまたは最初のnテンキーのフレンドリ番号を返します。最初のテンキーは1です。0から始まるテンキーのフレンドリ番号は1です。 近所 各桁の近傍は次のとおりです。 0:{0,1,2} 1:{0,1,2,4} 2:{0,1,2,3,5} 3:{2,3,6} 4:{1,4,5,7} 5:{2,4,5,6,8} 6:{3,5,6,9} 7:{4,7,8} 8:{5,7,8,9} 9:{6,8,9} テストケース/シーケンス これらは最初の100用語です [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 20, 21, 22, 23, …

30
不足している数は何ですか(9で割り切れます)
チャレンジ 9で割り切れる整数と1桁の欠落桁がある場合、欠落桁を見つけます。 欠落している数字は、一貫している限り、数字0〜9以外の任意の文字で表すことができます。 欠落している数字が0または9である可能性がある場合は、そのことを示す何かを出力します。 ユーザーが不足している数字を1つだけ、数字を1つだけ入れるのに十分な知性があると仮定します。 テストケース テストケースでは、欠落している数字は疑問符で表されます 123? -> 3 ?999 -> 0 or 9 ?0023 -> 4 000?1 -> 8

28
最大の素数指数
整数を指定するとn >= 2、その素因数分解で最大の指数を出力します。これは、OEISシーケンスA051903です。 例 させてくださいn = 144。その素因数分解は2^4 * 3^2です。最大の指数は4です。 テストケース 2 -> 1 3 -> 1 4 -> 2 5 -> 1 6 -> 1 7 -> 1 8 -> 3 9 -> 2 10 -> 1 11 -> 1 12 -> 2 144 -> 4 200 -> 3 500 …

8
私は対称的で、回文ではありません!
バックグラウンド 私はパリンドロームに触発されました。あなたは?、「回文ではないが」という衝撃的な事実が提示されて()()いるので、())(代わりに何であるかを自問()()しました。答えは単純です。それは垂直対称軸を持つストリングです! タスク 文字列S(または言語の適切な同等物)を入力として受け取り、垂直軸に沿った対称性をチェックし、それに応じて真実または偽の値を返すプログラムまたは関数を作成します。妥当な手段を使用して、入力を取得し、出力を提供できます。 反射対称性 垂直軸の周りの反射対称(または左右対称)は、ストリングの正確な中心にミラーを垂直に配置すると、ストリングの前半の反射イメージがストリングの後半と同一になることを意味します。 たとえば、次の文字列は垂直軸を中心に反射対称です。 ()() ()()() [A + A] WOW ! WOW OH-AH_wx'xw_HA-HO (<<[[[T*T]]]>>) (:) )-( ())(() qpqp 以下はそうではありません: ())( ((B)) 11 +-*+- WOW ! wow (;) qppq コンテストのルール •プログラムまたは関数は、印刷可能なASCII文字のみを受け取ります。空の文字列(もちろん対称です!)を合法的な入力として含めることも、含めないこともできます。 •垂直軸に関して対称とみなせるASCII文字は次のとおりです(最初のスペース、および大文字と小文字の違いに注意してください)。 !"'+*-.:=AHIMOTUVWXY^_ovwx| 「ミラーリングされた」と見なされるASCII文字とそれに対応する文字は次のとおりです。 ()<>[]{}qpbd/\ 彼らがミラーリングされているので、あなたは両方を持つことができ、なお()だけでなく、として)(、/\および\/など、 他のすべてのASCII印刷可能文字は、非対称であり、対応するミラー化された文字がないと見なす必要があります。 •これは、コードとゴルフの課題です。バイト単位で測定したプログラムが短いほど、どのプログラミング言語でも優れています。 •対称的なプログラムを作成する人々に称賛を! 注:この質問は、「Convenient Palindrome」の複製ではなく、括弧が反転している回文の文字列を確認する必要があります。この質問は2つの理由で異なります。 1)括弧以外の文字に関係するものについては、対称文字のみが逆順で表示されるため、他の質問の制限です。 2)「便利な回文」の概念ではなく、対称性の概念に基づいているため、鏡像化されたキャラクターは両方の順序、すなわち[]と][で現れることがあり、これにより、それを解決するプログラムは他の問題を解決するプログラムとは異なります。
22 code-golf  string 

13
NPを実行する:最大のクリークを見つける
バックグラウンド これを書いている時点で、NPの問題対Pは、まだ未解決のですが、聞いたことがあるかもしれませんノルベルト・ブルム社の新しい紙、すでにされてP!= NP、その主張を証明誤っていると疑われる(しかし、我々が表示されます)。 この論文で議論する問題はクリーク問題です。少なくとも新聞記事でそれを読んでいるので、間違っている場合は修正してください。しかし、いずれにしても、次のバリエーションを解決するプログラムを書いてほしいです。 タスク たくさんの生徒がいる大きな学校があると仮定します。これらの各生徒には、この学校に何人かの友人がいます。生徒のクリークは、お互いのメンバーと友達である生徒だけから成るグループです。 あなたのプログラムは、入力として友人である学生のペアを受け取ります。この情報から、プログラムは最大のクリークのサイズを見つけなければなりません。学生は整数IDで識別されます。 数学用語を好む場合、これは、それぞれが2つのノードで識別される無向グラフのエッジを与えられることを意味します。 入力 入力は、正の整数ペアの空でないリストになります(例:)[[1,2],[2,5],[1,5]]。この入力は、たとえば、配列の配列、それぞれ2つの数値を含むテキスト行など、適切な形式で入力できます。 出力 予想される出力はn >= 2、最大のクリークのサイズである単一の数値です。上記の入力例で3は、すべての生徒(1、2および5)が互いに友達であるため、結果はになります。 テストケース [[1,2]] => 2 [[1,2],[3,1],[3,4]] => 2 [[1,2],[2,5],[1,5]] => 3 [[2,5],[2,3],[4,17],[1,3],[7,13],[5,3],[4,3],[4,1],[1,5],[5,4]] => 4 (the largest clique is [1,3,4,5]) [[15,1073],[23,764],[23,1073],[12,47],[47,15],[1073,764]] => 3 (the largest clique is [23,764,1073]) [[1296,316],[1650,316],[1296,1650],[1296,52],[1650,711],[711,316],[1650,52], [52,711],[1296,711],[52,316],[52,1565],[1565,1296],[1565,316],[1650,1565], [1296,138],[1565,138],[1565,711],[138,1650],[711,138],[138,144],[144,1860], [1296,1860],[1860,52],[711,1639]] => 6 (the largest clique is …

9
名詞ですか?
入力として文字列を指定し、それが名詞かどうかを判断します。 名詞として正しくラベル付けするかどうかで、最も一般的な1000の英単語でスコアが付けられます。 これらの単語のほとんどを50バイト以下に正しく分類するプログラムまたは関数が勝ちます。 名詞 名詞は、通常、物を表す言葉です。より複雑になりますが、それが基本的な考え方です。 単語が名詞または他の品詞のいずれかである可能性がある場合、それがまれな用法であっても、それを名詞として分類しました。または、実際に、このサイトに私のためにそれをさせました。 あなたが採点される単語は、これらの1000の一般的な単語です。これは単純なWikipediaからのもので、「2」と「1回」が追加されています。それらのうち、これらは586名詞であり、これらは414非名詞です。ここで 3つのリストをすべて見つけることができます。これらの入力はすべて小文字であることに注意してください。これらのリストは最終的なものです-文法を主張しようとしないでください。 名詞である入力で真実の結果を出力し、名詞ではない入力で偽の結果を出力する場合、プログラムは正しいと見なされます。 微妙: プログラムには確定的な出力が必要です。ランダム性を使用する場合は、シードします。プログラムでは、組み込みの名詞リストまたはその他の組み込みの品詞機能を使用できません。 例: a: noun act: noun active: noun about: non-noun above: non-noun across: non-noun あなたの答えにあなたのプログラムの成功率を示してください。最高の成功率で最大50バイトのプログラムまたは機能が優先されます。同点の場合、最低バイト数が勝者を決定します。がんばろう!

8
合計と等しい製品、またはその逆
等価の楽しいペアは1 + 5 = 2・3および1・5 = 2 + 3です。これらのような多くのものがあり、別のものは1 + 1 + 8 = 1・2・5と1・1・8 = 1 + 2 + 5です。一般に、生成物N正の整数の和に等しく、Nは正の整数、およびその逆。 このチャレンジでは、入力n> 1に対して、順列を除く正の整数のそのようなすべての組み合わせを生成する必要があります。これらは妥当な形式で出力できます。たとえば、n = 3の可能なソリューションはすべて次のとおりです。 (2, 2, 2) (1, 1, 6) (1, 2, 3) (1, 2, 3) (1, 3, 3) (1, 1, 7) (1, 2, 5) (1, 1, 8) 2GB …

30
誰もGAU番号を知らない
GAU番号を紹介します GAU(1) = 1 GAU(2) = 1122 GAU(3) = 1122122333 GAU(4) = 11221223331223334444 GAU(6) = 11221223331223334444122333444455555122333444455555666666 ... GAU(10) = 11221223331223334444122333444455555122333444455555666666122333444455555666666777777712233344445555566666677777778888888812233344445555566666677777778888888899999999912233344445555566666677777778888888899999999910101010101010101010 このチャレンジはとても簡単です! 整数n> 0が与えられた場合、GAU(n)の桁数を見つけます 例 レッツ・メイクGAU(4) 私たちは(私たちは4に到達するまで)は、次の手順を取り、それらを連結 [1][122][122333][1223334444] すべての数字をその値と同じ回数だけ記述する必要がありますが、1から毎回カウントする必要があります 1から1までカウントする必要があるGAU(5)を作成してみましょう [1] 次に1から2(ただし、すべての数値をその値と同じ回数だけ繰り返します) [122] その後1から3 [122333] その後1から4 [1223334444] そして最後に1から5まで(GAU(5)を見つけたいのでこれが最後のステップです) [122333444455555] これらすべての手順を実行し、それらを連結すると 、結果はGAU(5)になります 11221223331223334444122333444455555 これらのGAU番号の桁数に関心があります。 テストケース 入力⟼出力 n ⟼ Length(GAU(n)) 1 ⟼ 1 …

23
フラクタル大聖堂
正の整数を指定すると、次の構造のn >= 1最初のn行が出力されます。 # # # ### # # # # # ## ## ##### # # # # # # # # # # ### # ## ## ## # ## ### ### ####### n目1インデックス付き列は、バイナリ表現であるnと最後の文字、コピーせずにミラーリング、#1の代わりに、および<space>すべての行を中心と0の代わりにします。 ASCIIアートとして出力する必要がありますが#、この例で使用する場所の代わりに非空白文字を使用できます。末尾の空白は許可され、末尾の改行は許可されます。出力は例のように見える必要があり、余分な先行空白や先行改行はありません。 ここでは、フラクタル大聖堂の最初の1023行を表示できます。 より大きなテストケースを生成するために、Pythonでの無制限のリファレンス実装を次に示します。

22
モジュラ乗法逆
あなたの仕事は、2つの整数を与え、モジュロbのモジュラ乗法逆関数が存在する場合、それaをb計算することです。 aモジュロのモジュラー逆数bは、cそのような数ですac ≡ 1 (mod b)。この番号はb、aとの任意のペアに対して一意のモジュロですb。それが唯一の最大公約数場合が存在aしてbいます1。 トピックに関する詳細情報が必要な場合は、モジュラー乗法的逆関数のWikipediaページを参照してください。 入出力 入力は、2つの整数または2つの整数のリストとして与えられます。プログラムは、単一の数、区間内にあるモジュラー乗法逆数0 < c < b、または逆数がないことを示す値のいずれかを出力する必要があります。値は、範囲内の数値を除く任意の値にすることができ(0,b)、例外でもあります。ただし、値は逆行列がない場合と同じである必要があります。 0 < a < b 想定できる ルール プログラムはある時点で終了し、各テストケースを60秒未満で解決する必要があります 標準的な抜け穴が適用されます テストケース 以下のテストケースは次の形式で提供されます。 a, b -> output 1, 2 -> 1 3, 6 -> Does not exist 7, 87 -> 25 25, 87 -> 7 2, 91 -> 46 …

22
私の後ろにサタンプライムをゲット!
サタンプライム 彼らは誰なの? 彼らはしているPrimes含む666 これらサタン-素数です:[46663,266677,666599,666683,616669] これらはありません。[462667,665669,36363631,555] プロット 6661より大きいすべての数字の後ろにはサタンプリムスがいます チャレンジ 整数n>6661が与えられた場合、サタンプライムを背後(または等しい)で、それ自体に最も近いものを見つけます。 例 Integerのn=30000背後には3つのSatan-Primes(SP)があります[6661, 16661, 26669]。 あなたのコード26669は、その後ろに最も近いものを返す必要があります テストケース 入力->出力 6662->6661 10000->6661 66697->66697 (a SP returns himself) 328765->326663 678987->676661 969696->966677 ルール Yorコードはn、あなたの言語の範囲内で動作するはずです。 これはcode-golfなので、バイト単位の最短回答が勝ちです!
22 code-golf  primes 

30
自分自身で配列を追加する
今日の課題は、配列を取得してチャンクに分割し、それらのチャンクを追加することです。 仕組みは次のとおりです。プログラムまたは関数には、整数の配列aとチャンクサイズが与えられますL。配列をsizeの配列に分割する必要があります。L配列の長さが割り切れないL場合は、均等に割り切れるように0を追加する必要があります。配列がチャンク化されると、すべてのチャンクが要素ごとに一緒に追加されます。結果の配列が出力されます。 あなたはL0より大きいと仮定することができ、それaは空ではありません。aの内容がポジティブであると仮定することはできません。 以下に例を示します。 [1,2,3,4,5,6,7,8], 3 => [1,2,3]+[4,5,6]+[7,8,0] => [1+4+7,2+5+8,3+6+0] => [12,15,9] テストケース: Array Length Output [1] 1 [1] [1] 3 [1,0,0] [0] 3 [0,0,0] [1,2] 3 [1,2,0] [1,2] 1 [3] [-1,1] 2 [-1,1] [-7,4,-12,1,5,-3,12,0,14,-2] 4 [12,-1,0,1] [1,2,3,4,5,6,7,8,9] 3 [12,15,18] これはcode-golfで、最少バイトが勝ちます!

27
差分リストを並べ替える
整数のリストの差分リストは、連続するメンバーのリストの差分です。 たとえば、 1, 3, 2 ,4 は 2, -1, 2 あなたのタスクは、入力として差分リストを取得し、元のリストがソートされた場合の差分リストの外観を出力することです。 たとえば、差分リスト 2, 1, -2, -1 リストを表す場合があります 2 4 5 3 2 ソートされるとき 2 2 3 4 5 の違いリストがあります 0 1 1 1 これはコードゴルフであるため、回答はバイト単位でスコアリングされ、バイト数が少ない方が優れています。

15
無限の力の塔
チャレンジ とてもシンプルで、入力が与えられxたら、無限のパワータワーを計算してください! x^x^x^x^x^x... あなたの数学愛好家にとって、これはx無限の四分割です。 次のことに注意してください。 x^x^x^x^x^x... = x^(x^(x^(x^(x...)))) != (((((x)^x)^x)^x)^x...) 驚いたことに、これに関連する「単純な」数学の挑戦はありませんでした!* 仮定 xう、常に収束します。 負の複素数を処理できる必要があります これはcode-golfなので、最低バイトが勝ちです! あなたの答えは、少なくとも小数点以下5桁まで正しいはずです 例 Input >> Output 1.4 >> 1.8866633062463325 1.414 >> 1.9980364085457847 [Square root of 2] >> 2 -1 >> -1 i >> 0.4382829367270323 + 0.3605924718713857i 1 >> 1 0.5 >> 0.641185744504986 0.333... >> 0.5478086216540975 1 …
22 code-golf  math 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.