上司から、必要な12のプログラミングタスクのリストをできるだけ早くメールで送信されました。タスクは非常に簡単ですが、あなたの上司は、ソーシャルネットワーキングに魅了された若いソフトウェアの大物であり、あなたのソリューションが単一のTwitterツイートに収まることを主張しています。
つまり、すべてのタスクを解決するのに必要なコードは140バイトだけであり、タスクあたりの平均は11.67バイトです。(はい、Twitter は文字をカウントしますが、上司は具体的にバイトを言っています。)
140バイトで12のタスクすべてを解決する方法はないことに気づきましたが、上司が実際にすべてのソリューションをテストするとは思わないでしょう。したがって、できる限り多くのタスクを解決し、一部のタスクを完全にスキップします。あなたの考え方は、タスクのどのサブセットを完了するかは問題ではなく、サブセットが可能な限り大きいことだけです。
いくつのタスクを完了できますか?
チャレンジ
最大12の異なるプログラムを作成します。各プログラムは、以下にリストした12のタスクの1つを正確に解決します。これらのプログラムの長さの累積合計は140バイトを超えることはできません
あるいは、1〜12の整数を取り、(理想的には)対応するタスクを解決し、必要に応じてより多くの入力を取得する、140バイト以下の単一のプログラムを作成できます。すべてのタスクが機能する必要はありませんが、スコアにカウントされるタスクのみが機能します。動作しないタスクは、エラーまたは他の何かをすることができます。
どちらの場合でも、「プログラム」は実際には、入力を引数として受け取るか、入力を求めて、出力を出力するか返す関数です。そのため、たとえば、のようf(taskNumber, taskInput)
に見える140バイトの関数を作成したり、タスクごとに個別のコードスニペットを作成したりできます。一部は関数として、一部は本格的なプログラムとして作成します。
その他の詳細:
すべてのコードは同じ言語で作成する必要があります。
いつものように、入力は標準入力、コマンドライン、関数の引数、またはあなたの言語に普通なものから来るべきです。出力は、stdoutまたは言語の最も近い代替に出力されるか、適切なタイプで返されます。
妥当な量の入力フォーマットで十分です。たとえば、文字列を囲む引用符や
\n
実際の改行の代わりに。出力は、無関係な書式設定や空白のない、まさに必要なものでなければなりません。例外は、オプションの単一の末尾の改行です。
REPL環境でのみ実行されるコードは、プログラムまたは機能を構成しません。
複数のタスクを解決する複数のプログラムを作成することはできません。(理想的には)すべてのタスクを解決する1つのプログラム、または(理想的には)それぞれが単一のタスクを解決する12プログラムのいずれかです。
作成しなかったタスクソリューションまたはわずかに変更したタスクソリューションを投稿することは、元の著者に帰属を与え、理想的には許可を得ることなく許可されません。あなたの答えが主に他のすべての答えから最短の解決策を構成する場合、それはコミュニティwikiである必要があります。
得点
ほとんどのタスクを完了する提出物が勝者です。2つの提出が同点の場合、バイト数が最も少ないものが勝ちます。バイトカウントが同数の場合、以前の送信が優先されます。コミュニティWikiの回答は勝つことができません。
数だけでなく、解決したタスクを必ず教えてください!
ゴルファー以外のハンディキャップ:
この挑戦はゴルフ言語に支配される可能性が高いです。多くの言語では、140バイト以内で1つまたは2つのタスクを解決するのに問題がある場合があります。したがって、制限が3ツイート、つまり420バイトの非競合的回答を送信できます。他のすべてのルールは同じままです。
タスク
タスク1-3つの数字で三角形を形成できますか?
3つの正の整数を取り、それらの長さの3本の線が三角形を形成できるかどうかを示す真偽値を出力します。数字が特定の順序で来るとは限りません。
真実の例(1行に1つ):
20 82 63
1 1 1
2 3 4
1 2 2
偽の例:
6 4 10
171 5 4
1 1 2
1 2 3
タスク2-100万に最も近い
正確に7桁の10進数(0〜9)の文字列が与えられた場合、それらを再配置して、可能な限り100万に近い数を取得します。つまり、abs(1000000 - rearrangedNumber)
最小化する必要があります。
結果の数値を、文字列ではなく整数として出力するか、返します(言語の標準でない限り、先頭にゼロを付けないでください)。
例えばの入力が9034318
生じるはずである984331
(とありません1033489
)。
2893984
になるはず2348899
です。
0001000
になるはず1000000
です。
0000020
になるはず200000
です。
タスク3-シンプルなキーボードシミュレーター
小文字の文字列(az)、スペース、山かっこを入力します<>
。左から右に読むと、この文字列は、最初は空のテキストエディターが開いている間に標準キーボードで押されたキーを表します。文字とスペースは通常のキーに対応していますが<
、左矢印キーと>
右矢印キーに対応しており、どちらも押すとカーソルが移動します。
<
カーソルを1文字左に移動するか、カーソルが文字列の先頭にある場合は何もしません。
>
カーソルを1文字右に移動するか、カーソルが文字列の最後にある場合は何もしません。
入力文字列のすべてのキーが押されたら、テキストエディターに表示される文字列を出力します。カーソルを移動するためのエスケープコードの出力は許可されていません。
入力には、常に少なくとも1つの非矢印キー文字が含まれます。
たとえば、入力ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<f
は次のようになりますthe quick brown fox
。
op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>m
与える必要がありますllammoptimizer
。
e< <c<b<a
与える必要がありますabc e
。
<<<>><><<><toast>><<>><><<>><
与える必要がありますtoast
。
タスク4-FILTHEレター
多くのフォントでは、大文字の英語のアルファベットの6は、水平および垂直の線で完全に構成されていますE
、F
、H
、I
、L
、とT
。これらをFILTHE文字と呼びます。
大文字の文字列(AZ)を取得し、FILTHE文字の行数をカウントして、結果の整数を出力します。
E
、F
、H
、I
、L
、およびT
それぞれ4、3、3、3、2、及び2ラインを有します。
たとえばGEOBITS
、4 + 3 + 2 = 9行のFILTHE文字(for .E..IT.
)の部分があるため、出力はになります9
。
ABCDEFGHIJKLMNOPQRSTUVWXYZ
出力する必要があります17
。
ABCDGJKMNOPQRSUVWXYZ
出力する必要があります0
。
FILTHYLINESINLETTERS
出力する必要があります39
。
タスク5-アレックス再帰 A
モデレーターのAlex A.には、かなり謎めいたイニシャル「A」があります。
今、私は確信していませんが、私はのA.
略だと思います.A xelA
。そして、私は.A
そこがひそかに立っていることもかなり確信していAlex A.
ます。
したがって、Alexのフルネームを取得するには、A.
「」と.A
「」を展開する必要があります。
Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.
プログラムに負でない整数を取り込んで、Alex A.
何回も展開し、結果の文字列を出力します。
に
0
なるAlex A.
、に
1
なるAlex .A xelA
、になる、に
2
なるAlex Alex A. xelA
、に
3
なるAlex Alex .A xelA xelA
、に
4
なるAlex Alex Alex A. xelA xelA
、に
5
なるAlex Alex Alex .A xelA xelA xelA
、
などなど。
(これは、Alexをmodのトリビュートチャレンジからうっかり除外してしまったために気分が悪くなったためです。:P)
タスク6-テンキーの回転
1から9までの整数を受け取ります(文字列として受け取ることもできます)。3×3の二乗数字を出力します
789
456
123
入力桁が最上行のどこかに表示されるように、90°ずつ回転します。ときに5
入力された任意の回転は以降有効な出力である5
カントは、頂部に回転させること。
例えば、いつ3
入力されるか、両方
963
852
741
そして
321
654
987
有効な出力です。
入力の4
場合のみ
147
258
369
有効な出力です。
タスク7-数字を10に分割する
10進数(0〜9)の空でない文字列を取得し、各セクションのすべての数字が正確に10になる合計セクションで分割できる場合は、真の値を出力します。これが不可能な場合は、偽の値を出力します。
たとえば、の19306128
よう19|3061|28
に分割でき、すべてのセクションが合計10(1 + 9、3 + 0 + 6 + 1、2 + 8)になるため、真の値が出力されます。
真実の例(1行に1つ):
19306128
073
730
0028115111043021333109010
2222255
偽の例:
6810410
9218
12341
5222225
000
タスク8-スクエアクロック
一貫したサイズの複数行文字列を取得します。
12
入力が次の場合に出力
_ _
| | |
|_ _|
3
入力が次の場合に出力
_ _
| |_|
|_ _|
6
入力が次の場合に出力
_ _
| | |
|_|_|
9
入力が次の場合に出力
_ _
|_| |
|_ _|
他の入力ケースはありません。
タスク9-ブラケットアート
左ブラケットのそれぞれの1つを含む4バイト列を取り込み(
、[
、{
、および<
任意の順序で。
対応する右角かっこを追加して、文字列の長さを8バイトにし、対称の垂直線を作成します。例えばに[<({
なり[<({})>]
ます。
次に、この文字列のすべてのブラケットを逆にします。例えばに[<({})>]
なり]>)}{(<[
ます。
元の8バイトのブラケット文字列を上下に反転したバージョンで別々の行に出力します。
入力のための最終的な出力はそう[<({
だろう
]>)}{(<[
[<({})>]
]>)}{(<[
同様に、出力のためには、<({[
あるべきです
>)}][{(<
<({[]})>
>)}][{(<
が欠落しており、余分な(<<[
があるため、入力は無効です。{
<
タスク10-Perimiterize
.
空のスペースを表す、およびX
固体タイルを表すで作成された長方形のテキストグリッド(最小でも1×1)を使用します。グリッドの境界を超えるセルは空と見なされます。4つのグリッドエッジの行と列のそれぞれに少なくとも1つのが含まれると仮定できますX
。
たとえば、有効な入力は次のとおりです。
XXX.....X.....
X..X...X.X....
XXX.....X....X
出力隣人毎空セルことテキストの別の長方形のグリッドX
直角または斜めに、入力グリッド外のものを含むが、となりますo
。したがって、本質的にのペリミターはo
、固体タイルのすべての部分の周りに描かれます。新しいグリッドは、必要以上に大きくするべきではありません。
したがって、上記の例の出力は次のようになります。
ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo
同様に、入力の出力がXXX..X.X
なければなりません
oooooooooo
oXXXooXoXo
oooooooooo
そして出力
oooooooooo.
oXXXooXoXo.
oooooooooo.
空の右端の列は不要なので無効です。
、およびの代わりに、任意の3つの印刷可能なASCII文字を使用できます。.
X
o
タスク11-Sator Square
Sator Squareを出力します。
SATOR
AREPO
TENET
OPERA
ROTAS
文字はすべて小文字でも大文字でもかまいません。
SatOR
aRePO
tenet
OPERa
RoTaS
有効な出力でもあります。
入力はありません。
タスク12-プライムツイート
95個の印刷可能なASCII文字のそれぞれを少なくとも1つ含む140バイトの印刷可能なASCII文字列を入力せずに出力します。(したがって、45文字が重複します。)
この文字列内のすべての140バイトの文字コードの合計でなければなりませんソフィー・ジェルマン素数、すなわち素数p
となるよう2p+1
にも素数です。スペースの文字コードは、32、33の場合!
、34の場合"
、...など、126の場合~
です。Pythonでは、合計はとして計算できますsum(map(ord, myString))
。
出力例は次のとおりです。
! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d
import
s からバイトをカウントする方法は?2つが同じモジュールを必要とする5つの関数(たとえばimport Math
)を書いたとしましょう。これは2回カウントされますか?