グラミングの詰め込み-12タスクTweet


42

上司から、必要な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文字を使用できます。.Xo


タスク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

文字コードの合計は、対応する安全な素数が24407である素数 12203です。


7
CJam / Pyth
— Fatalize

9
私はあなたの挑戦に参加できて光栄です。:P
— アレックスA.

結果が出力に出力された後、タスクをエラーで終了させることはできますか?
— トルカド

1
imports からバイトをカウントする方法は?2つが同じモジュールを必要とする5つの関数(たとえばimport Math)を書いたとしましょう。これは2回カウントされますか?
— nimi

2
私はこの質問をトピック外として閉じることを投票しています。なぜなら、それはパーツ間の相互作用が不十分なマルチパートの課題であるためです
— pppery

回答:


10

Pyth、136バイトで9タスク

タスク1:7バイト

<-F_SQ0

デモンストレーション

降順で並べ替え(_SQ)、それらを減算し(a-b-c)、結果が負であるかどうかを確認します。

タスク2:14バイト

sho.a-sN^T6.pz

デモンストレーション

すべての文字列順列(.pz)を形成し、数()と100万()oの差の絶対値()に基づいてソート()します。.a-sN^T6

そのような最初の文字列(h)を取得し、numに変換します。(s)。

タスク4:19バイト

s/L+\EPP*3"EFHILT"z

デモンストレーション

反復"EFHILT"3回(*3)、末尾を削除するLT(PP)、および追加しますE(+\E)。入力の各文字を、その文字列の出現回数にマッピングします。(/L ... z)。和。(s)。

タスク5:16バイト

u+"Alex "_GhQ".A

デモンストレーション

で開始し"A."、逆に"Alex "開始にan を追加し、入力+ 1回。

タスク7:13バイト

}Y-RTsMM./sMz

入力文字列を1桁の数字のリスト(sMz)に変換します。すべてのパーティションを形成します(./)。各パーティションの各要素を合計します(sMM)。各サブリストからすべての10を削除します(-RT)。空のリストが全体リストに含まれているかどうかを確認して、サブリストが空になっているかどうかを確認します(}Y)。

タスク8:11バイト

*3h%%CQC\Ç4

デモンストレーション

モジュロマジック。数値(CQ)に変換し、mod 199(C\Ç= 199)を取得し、そのmod 4を取得します。その後、1を追加し、3を乗算します。

タスク9:21バイト

J+Xz"<{[()]}>")_zJ_JJ

デモンストレーション

最初に、ミラー文字に変換さXz"<{[()]}>")れた入力(+ ... _z)で構成される最初の行を生成し、その後に反転入力()を続けて、に保存しJます。次に、その行を印刷し、その逆、およびその行を再度印刷します(J_JJ)。

タスク11:22バイト

+J"SATOR
AREPO
TEN"t_J

デモンストレーション

文字列とその反転を印刷するだけですが、centerを複製しないでくださいN。

タスク12:13バイト

++G*19\3srd\

デモンストレーション

コードの最後に非表示DEL(7F)文字があります。

これは印刷します

abcdefghijklmnopqrstuvwxyz3333333333333333333 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

これは文字合計を持ちます11321。これは、で構成されG、アルファベット、19、3秒、および印刷可能なASCII文字のすべて。


28

CJam、140バイトの8 9タスク

まず、ソリューションを並べ替えて、ツイートに適合するソリューションを示すために使用できるスクリプトを次に示します。

{\s\Se[oSo}:F;
qN/ee{W=,}${)_,_T+:T140>X*_{0:X;}*'=@11+*N+*o\~)YF_,ZFTZFoNo}/

12のソリューションを各行に1つずつ入力に貼り付けます。ここで実行します。最初の列はタスク番号、2番目はそのサイズ(文字数 -バイトカウントと異なる場合は自分で修正する必要があります)、3番目は累積サイズです。ツイートに収まるプログラムは、の行で残りから分離されてい===ます。

私にとって、出力は次のようになります。

 1   7   7 q~$~\->
 8  10  17 qDbJ%5/)3*
12  12  29 ',32>_51>'d
 7  13  42 Aq{~-Ace|}/N&
 2  15  57 qe!{~1e6-z}$0=~
 4  19  76 q"FIHEELT"3*H<fe=:+
 5  20  96 ".A"q~){" xelA"+W%}*
 9  22 118 q_{_')>+)}%W%+_W%N@N3$
11  22 140 "SATOR\AREPO\TEN"_W%1>
====================================
 6  25 165 9,:)s3/zq~))3mdg*{W%z}*N*
 3  43 208 LLq{_'=-z({+}{'=>_)$\[{)@+\}{\(@\+}]=&}?}/\
10  45 253 0XW]_m*qN/{'.f+W%z}4*f{\~@m>fm>N*}(\{8f^.e>}/

だから、私は現在、ツイートに収まることができるタスクです。

タスク1-3つの数字で三角形を形成できますか?- 8つの 7バイト

1バイトを節約してくれたjimmy23013に感謝します。

q~$~\->

テストスイート。

入力はCJamスタイルのリストであることが期待されています。

これはかなり簡単です。最大の辺が他の2つの合計より短いかどうかを確認します。または同等に、最短辺が他の2つの差よりも長いことを確認します。

q~  e# Read and eval input.
$~  e# Sort the values and dump them on the stack.
\-  e# Subtract the middle value from largest.
>   e# Check if the smallest value is greater than that.

タスク2-100万に最も近い-15バイト

qe!{~1e6-z}$0=~

テストスイート。

単純なブルートフォース:

q        e# Read input.
e!       e# Get all permutations.
{        e# Sort by...
  ~      e#   Evaluate the permutation to get its numerical value X.
  1e6-z  e#   abs(X - 1,000,000)
}$
0=       e# Pick the first element (which minimises the difference)
~        e# Evaluate it to get rid of the leading zeroes.

タスク4-FILTHEレター-21 19バイト

2バイトを節約してくれたjimmy23013に感謝します。

q"FIHEELT"3*H<fe=:+

テストスイート。

考え方は、各FILTHE文字を各直交線ごとに1回含む文字列を作成することです。これは、面白い文字列操作を介して行われます。

q          e# Read the input.
"FIHEELT"  e# Push this string. It first contains the 3-line letters, then the 2-line 
           e# letters, where we include 'E' twice to make it count for 4.
3*         e# Repeat 3 times: "FIHEELTFIHEELTFIHEELT"
H<         e# Truncate to 17 characters: "FIHEELTFIHEELTFIH". This is chosen such that
           e# it discards the third repetition of the 2-line letters.
fe=        e# For each character in the input, count its occurrences in this new string.
:+         e# Sum them all up.

タスク5-Alex Recursive A.- 27 20バイト

".A"q~){" xelA"+W%}*

テストスイート。

substitionをImplemeting A.と.A直接することはあまりにも高価です。代わりに、毎回文字列を逆にすれば、1つのケースを処理するだけでよいことに気付きます。さらに、Alex毎回(およびスペース)を追加することは、イニシャルを拡張することと同等です。文字列を逆にする前に逆を追加することにより、別のバイトを保存できます。

".A"        e# Start with ".A" (the -1st iteration if you like).
q~)         e# Read input, eval, increment (so the following block is run at least once.)
{           e# Repeat this block that many times...
  " xelA"+  e#   Append " xelA".
  W%        e#   Reverse the string.
}*

タスク7-数字を10に分割する-18 16 13バイト

Aq{~-Ace|}/N&

テストスイート。(各出力を括弧で囲みます。)

正確にはユーザーフレンドリーではありません。真実の値は単一の改行であり、偽の値は空の文字列です。

基本的な考え方は単純です。正確に10に達するたびにリセットする現在の合計に数字を追加します。合計は入力の最後でゼロでなければなりません。開始時には、合計が10に短くなり、数字が減算され、0に達するたびに合計がリセットされます。ただし、入力がすべてゼロの場合、真偽を返さないようにする必要があります。私はそれをやってい最短の方法は、総をリセットするためだった文字、この作品をコードポイント10(改行)で、その後、私たちは実際にスタック上にその文字を持っていることを最後に確認して、ない数10整数ゼロと文字ゼロ(ヌルバイト)の両方が偽であるためです。

A     e# Push a 10, the initial running total.
q{    e# For each character in the input...
  ~-  e#   Evaluate the character to get the digit and subtract it from the total.
  Ac  e#   Push a linefeed character.
  e|  e#   Logical OR of the running total and the linefeed character (using
      e#   short-circuiting).
}/
N&    e# Take the set intersection with the string containing a linefeed character.
      e# If the total is still a number of any character other than the linefeed,
      e# this will yield an empty string. Otherwise, the string will remain unchanged
      e# and the linefeed will be printed.

タスク8-スクエアクロック-10バイト

qDbJ%5/)3*

テストスイート。

これは、正しい値にハッシュする文字コードのかなりランダムなモジュロマジックです。私はかなり短いものが可能であるとかなり確信していますが、この種の構造に対して(プログラム的に)見つけた最短のものです。

q   e# Read the input.
Db  e# Treat the character codes of the string as digits in base 13. This maps the
    e# four inputs to the values: 2023940117708546863
    e#                            2023940113755405840
    e#                            2023940781838850791
    e#                            2023940113755390292
J%  e# Take the result modulo 19. This gives [2, 5, 12, 18], respectively.
5/  e# Divide by 5 (rounding down). [0, 1, 2, 3], respectively.
)   e# Increment. [1, 2, 3, 4], respectively.
3*  e# Multiply by 3. [3, 6, 9, 12], respectively.

タスク9-ブラケットアート-23 22バイト

1バイトを節約してくれたSp3000に感謝します。

q_{_')>+)}%W%+_W%N@N3$

テストスイート。

かなり簡単です。左括弧と右括弧の間のマッピングは、2(または括弧の場合は1)を追加することにより行われます。

q_      e# Read input and duplicate.
{       e# Map this block onto each character...
  _')>  e#   Duplicate and check if it's not a parenthesis.
  +     e#   Add the result, leaving parentheses unchanged and incrementing the
        e#   other bracket types.
  )     e#   Increment again.
}%
W%+     e# Reverse and add to the original, giving the middle line.
_W%     e# Duplicate and reverse, giving the first line.
N@      e# Push a linefeed, pull up the middle line.
N3$     e# Push another linefeed, copy the first line.

タスク11-Sator Square-22バイト

"SATOR
AREPO
TEN"_W%1>

ここでテストしてください。

おそらくすべての中で最も退屈なソリューション。文字列の前半をプッシュし、次に逆にします。

"SATOR
AREPO
TEN"    e# Push everything up to the centre of the square.
_W%     e# Duplicate and reverse.
1>      e# Discard the "N", because we don't want that twice.

タスク12-プライムツイート-13 12バイト

',32>_51>'d

ここでテストしてください。(結果の診断出力付き。)

SEが除去'する印刷不能<DEL>(0x7F)があった後。コピーと貼り付けの場合は、代わりにこのバージョンを使用します。

'~),32>_51>'d

印刷された文字列は

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

つまり、すべての文字が1回実行さSれ~、その後にto から別の実行が続き、その後に単一のd。文字コードの合計は12203です。これは、少し試行錯誤して見つけました。

'~),32>  e# Push a string with all printable characters.
_51>     e# Duplicate this and discard the first 51 of them.
'd       e# Push a "d".

1
q~$~\-> q"FIHEELT"3*H<fe=:+。
— jimmy23013

@ jimmy23013ああ、最近のことを忘れてしまいましたe=。
— マーティンエンダー

20文字で#5を実行する方法を見つける前に、何かを投稿するのに十分な答えを得ることを望んでいました。
— ピーターテイラー

19

Pyth、138バイトで9タスク

これにはかなり時間がかかりました。

9つのタスクがPythの制限だと思います。次に短いプログラム(Sator Square)を含めると、160バイトになります。20バイトのゴルフはほとんどありません。2つまたは3つのタスクがあり、それらは少しいため、おそらく短縮できますが、全体的にはこのソリューションに非常に満足しています。

タスク1-3つの数字で三角形を形成できますか、8バイト

>FsMc2SQ

オンラインで試す:通常の入力またはテストスイート

タスク2-100万に最も近い14バイト

ho.a-^T6NsM.pz

オンラインで試す:通常の入力またはテストスイート

タスク4-FILTHEレター、20バイト

s*Vtsmmdd5/Lz"TLIHFE

オンラインで試す:通常の入力またはテストスイート

タスク5-Alex Recursive A.、16バイト

u+"Alex "_GhQ".A

オンラインで試す:通常の入力またはテストスイート

タスク6-テンキーの回転、20バイト

jeo}zhN.uC_N3_c3jkS9

オンラインで試す:通常の入力またはテストスイート

タスク7-数字を10に分割、15バイト

qTu+WnGTvHG-zZZ

オンラインで試す:通常の入力またはテストスイート

タスク8-スクエアクロック、12バイト

*3%%Cz1978 5

オンラインで試す:通常の入力またはテストスイート

タスク9-ブラケットアート、20バイト

V3_WtN+z_Xz"[<({})>]

オンラインで試す:通常の入力またはテストスイート

タスク12-プライムツイート、13バイト

++*d44srd\\&

オンラインで試す:通常の入力


2
送信内容を組み合わせると、133バイトになります。
— isaacg

9

TI-BASIC、728 830バイトの11 12タスク

7バイトのタスク1

:2max(Ans)`<`sum(Ans

入力はのリストですAns。

92 110バイトのタスク2

:seq(expr(sub(Ans,I,1)),I,1,7→L₁
:SortA(L₁
:min(7,1+sum(not(L₁
:{L₁(1)+sum(seq(L₁(I))₁₀^(I-8),I,2,7)),L₁(Ans)+sum(seq((I`>`Ans)L₁(I)₁₀^(1-I),I,2,7
:ᴇ6Ans(1+(0`>`min(ΔList(abs(1-Ans

数字のリストのプロンプト入力はの文字列ですAns。

119バイトのタスク3

:Input Str1
:"  →Str2
:For(I,1,length(Str1
:sub(Str1,I,1→Str3
:inString("`<>`",Ans
:If Ans:Then
:max(0,min(L,C+2Ans-3→C
:Else
:C+1→C
:L+1→L
:sub(Str2,1,C)+Str3+sub(Str2,C+1,L-C+1→Str2
:End
:End
:sub(Str2,2,L

文字列の入力を求めます。CとLが未定義または0であると仮定します。

35バイトのタスク4

:sum(int(2seq(inString("TLIHFE",sub(Ans,I,1))^.4,I,1,length(Ans

入力はの文字列ですAns。

63バイトのタスク5

:Ans/2→C
:sub("A.A",1+2fPart(C),2
:For(I,0,C
 :"Alex "+Ans
 :If I≠C
  :Ans+" xelA
:End
:Ans

入力はの数値ですAns。

66バイトのタスク6

:𝑖^((Ans <7)(Ans-3(Ans >3:For(Y、⁻1,1:Disp sum(seq((5-real(AnsX +Ans𝑖Y)-3imag(AnsX +Ans𝑖Y))₁₀^( X + 1)、X、⁻1,1:終了

入力はの数値ですAns。

36 43バイトのタスク7

:Input <strike>L₁</strike>Str1
:.5
:For(I,1,<strike>dim(L₁</strike>length(Str1
 :Ans+<strike>L₁(I</strike>expr(sub(Str1,I,1
 :If 10=int(Ans
  :0
:End
:not(Ans

数字のリストの文字列を要求します。

29バイトのタスク8

:18fPart(sum(seq(I(sub(Ans,I,1)=" ")/6,I,1,15

入力はの文字列ですAns。

83バイトのタスク9

:For(I,1,16,2
 :If I<8
  :Ans+sub("`)}]>`",inString("`({[<`",sub(Ans,4,1)),1
 :sub(Ans,I,1)+Ans
:End
:For(I,⁻1,1
 :Disp sub(Ans,9-8abs(I),8
:End

入力はの文字列ですAns。

159バイトのタスク10

:1→X
:Input Str1
:2+length(Str1→L
:"X
:While 2+L`>`length(Ans
 :Ans+Ans→Str2
:End
:Ans→Str3
:While 1
 :"XX
 :Ans+Str1+Ans→Str1
 :For(I,1,L
  :Ans+sub("0X.",2expr(sub(Str2,I+1,1))+not(expr(sub(Ans,I,3)+sub(Str2,I,3)+sub(Str3,I,3))),1
 :End
 :Disp sub(Ans,L+3,L
 :Str2→Str3
 :Str1→Str2
 :Input Str1
:End

それぞれのX0.代わりに使用し.Xoます(何も一致しません)。行ごとに入力を求めます。Xすべての出力を表示するには2行のsを入力し、終了するには2nd + Quitを入力する必要があります。

39バイトのタスク11

:Disp "SATOR
:Disp "AREPO
:Disp "TENET
:Disp "OPERA
:Disp "ROTAS

77バイトのタスク12

:Ans + "tvm_I%LinReg(ax + b)DS <(getKeyconj(1-PropZTest(dayOfWk(Manual-Fit C / YANOVA(* row(HorizRegEQUnarchive [J]!#$ &''、.234567890:; = >?@GBQX \^ _`qw {|}〜

または、16進数として:

72702ABB21FFDBADBB25BB3EEF06EF16
6331BB5917746201BB695C092DBBD2BB
D3BBD4AEAE2B3A323334353637383930
3EBBD66A6CAFBBD147425158BBD7F0BB
D9BBD5BBC1BBC708BBD809BBCF

入力が入った文字列である"の中でAns。

これは実際にはTI-BASICでは不可能です。基本プログラムを16進編集し、特定の2バイトトークンを使用してすべての印刷可能なASCII文字をソースコードに取り込むことは可能ですが、それは問題ではありません。問題は、"プログラム入力なしでクリーンな計算の純粋な基本の文字列に文字を格納する方法がないことです(同じことが→文字に適用されますが、それは印刷可能なアスキーではありません)。ただし、"basic以外の方程式に代入することは可能です。その後、basicを使用して方程式を文字列に変換し、その文字列を表示できます。それに加えて、画面上には一度に128文字分のスペースしかありません。


7

Perl、117バイトで4タスク

実際の言語を試してみましょう;)

まだあきらめていませんが、140バイトで5つのタスクを圧縮することさえできます。

*タスク1:30 + 1 = 31バイト

@F=sort@F;say$F[0]+$F[1]>$F[2]

使用法: perl -aM5.010 entry.pl input.txt

*タスク4:32 + 1 = 33バイト

y/ELTFHI/4223/;s/./+$&/g;$_=eval

使用法: perl -p entry.pl input.txt

タスク5:54バイト

say"Alex "x($_/2+1).qw(A. .A)[$_%2]." xelA"x(--$_/2+1)

-2b Dom Hastingsに感謝

使用法: echo 4 | perl -M5.010 entry.pl

タスク7:37 + 2 = 39バイト

($i+=$_)>10&&exit,$i%=10for@F;$_=!$i;

使用法: perl -pF entry.pl input.txt

*タスク8:21 + 2 = 23バイト

$_=y/|_ 
/14/dr/64%14

これは少し難しいものです。それぞれ置き換えることによって始まった|とxし、それぞれを_用いてy、各グリッドのためのユニークな2桁の文字列を生成するために、次に交換スペース(yyxxyxxyyx、yyxxyxxyyxyyxxxxyxyx、yyxxxxyxyxyyxyxxxyyx、yyxyxxxyyxyyxxxxyyx、yyxxxxyyx)。次に、私は、ブルートフォースのための値にプログラムを書いたxとy置き換えた後で生産され、数字上で行うことができる数学演算xおよびy各番号について3,6,9,12の出力を与えます。最後に、x=1、y=4と魔法の操作がしました/64%14。

使用法: perl -0p entry.pl input.txt

タスク11:34バイト

say"SATOR
AREPO
TENET
OPERA
ROTAS"

使用法: perl -M5.010 entry.pl

*タスク12:30バイト

say d.pack"C*",32..126,83..126

使用法: perl -M5.010 entry.pl

免責事項:-M5.010 「無料」と見なされます


RubyはPerlほどリアルではありませんか?;)
— マーティンエンダー

9
あなたの答え(ノイズのように見える)を見ると、Perlを本当の言語とは
— 見なし

1
よくやった!私はあなたと2つのバイトを保存することができると思うqw(A. .A)[$_%2]の代わりに、("A.",".A")[$_%2]タスク5で、と私はあなたが他のいくつかのバイトを乗り降りすることができますよ...
— ドムヘイスティングス

6

Ruby、280バイトで4つのタスク(非競合)

これは単なる試みです。後でタスクを作成し続けます(そして、できれば既存のものをゴルフします)。

タスク1

a=gets.split.map &:to_i;p a.all?{|e|e<a.inject(:+)-e}

タスク2

p gets.chars.permutation.map{|a|a.join.to_i}.min_by{|x|(x-1e6).abs}

タスク4

n,b='EFHILT',0;gets.chars.map{|c|b+=n[c]==p ? 0:[4,3,3,3,2,2][n.index c]};p b

タスク5

a='Alex A.';gets.to_i.times{|i|i%2<1 ? a.sub!('A.','.A xelA'):a.sub!('.A',a)};$><<a

6

TI-BASIC、994バイトの12タスク

すべてをTIグループファイル(.8xg)としてダウンロードします

(リクエストごとにスポイラータグが追加されます。)

タスク1-3つの数字で三角形を形成できますか?-7バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:2max(Ans)<sum(Ans

タスク2-100万に最も近い-114バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:int(10fPart(Ans\10^(\-cumSum(binomcdf(6,0→X
:"sum(\L\X\10^(\cumSum(not(binompdf(6,0→\Y1\
:SortD(\L\X
:\Y1\→X
:sum(not(\L\X
:If Ans
:Then
:If max(\L\X=1
:X+\E\6-\10^(\6-Ans→X
:SortA(\L\X
:augment(ΔList(cumSum(\L\X)),{0→X
:End
:{X,\Y1\
:Ans(1+(0>min(ΔList(abs(\E\6-Ans

タスク3-シンプルキーボードシミュレーター-131 127バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:Input Str1
:DelVar X1→Y
:"..→Str2
:For(Z,1,length(Str1
:sub(Str1,Z,1→Str3
:(Ans=">")-(Ans="<
:If Ans
:Then
:max(1,min(Y+Ans,X+1→Y
:Else
:sub(Str2,1,Y)+Str3+sub(Str2,Y+1,X-Y+2→Str2
:X+1→X
:Y+1→Y
:End
:End
:sub(Str2,2,X

タスク4-FILTHEレター-34バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:sum(int(\³√(\12seq(inString("TLIHFE",sub(Ans,X,1)),X,1,length(Ans

タスク5-アレックス再帰A.-107バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:Input X
:".A..
:For(X,0,X
:Ans→Str1
:5int(.5X+.5
:sub(Str1,1,Ans+1)+sub(".A xelAlex A.",6gcd(X,2)-5,7)+sub(Str1,Ans+4,5X-Ans+1
:End
:sub(Ans,2,5X+2

タスク6-テンキーの回転-86バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:.3Ans+2(Ans=6→X
:[[9,6,3][8,5,2][7,4,1
:For(X,0,X
:rowSwap(Ans\^T\),1,3
:End
:Ans
:*row+(10,*row+(10,Ans\^T\,1,2),2,3
:For(X,1,3
:Disp Ans(3,X
:End

タスク7-数字を10に分割する-77バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:Ans+"0
:seq(expr(sub(Ans,X,1)),X,1,length(Ans
:augment(Ans,{10not(not(max(Ans→X
:1→X
:Repeat Ans≥dim(\L\X
:Ans+1
:If 10=sum(\L\X,X,Ans
:Ans+1→X
:End
:X=Ans

タスク8-スクエアクロック-35バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:12-3max(seq(X(sub(Ans,6gcd(X,2)+X,1)≠" "),X,1,3

タスク9-ブラケットアート-86バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:Input Str1
:For(X,1,4
:For(Y,0,1
:abs(X-9not(Y→Z
:"()[]{}<>
:sub(Ans,inString(Ans,sub(Str1,X,1))+Y,1
:Output(1,Z,Ans
:Output(2,9-Z,Ans
:Output(3,Z,Ans
:End
:End

タスク10-Perimiterize-218バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:".
:For(A,0,\E\9
:Input Str1
:Ans+Str1→Str2
:If Str1≠".
:End
:length(Ans→X
:round(A\^-1\(Ans-2→B
:seq(expr(sub(Str2,A,1)),A,2,X-1→B
:πAns→C
:"augment(Ans,augment(Ans,\L\B))+augment(Ans,augment(\L\C,Ans))+augment(\L\B,augment(Ans,Ans→X
:seq(0,A,1,B
:\L\X→A
:For(C,0,A+1
:seq(\L\A(A+BC),A,1,B→C
:int(Ans→B
:{0
:1+not(\L\X)+not(fPart(\L\X→B
:".
:For(X,1,B+2
:Ans+sub("120",\L\B(X),1
:End
:Disp sub(Ans,2,B+2
:End

これらの置換が行われました:0= .、1= X、2=o

(プログラムの開始後)入力の場合、最後の行が書き出されるまで、改行ごとにEnterを押して、一度に1行ずつ入力します。次に、Enterキーを押してピリオドを1つ入力し、もう一度Enterキーを押して文字列全体を送信します。

タスク11-Sator Square-38バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:Disp "SATOR","AREPO","TENET","OPERA
:"ROTAS

タスク12-プライムツイート-151バイト

TI-83 +プログラムファイル(.8xp)としてダウンロードする

:Ans+"!#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
:For(X,1,45
:Ans+" 
:End
:Ans

Ans二重引用符を含める必要があります。二重引用符は\Y1\、方程式エディターから直接入力Equ►String(\Y1\,Str1:Str1して、ホーム画面から実行することによって実行されます。

出力の長さは140です。8が2回現れ、他のASCII文字とともに45のスペースがあり、それぞれが1回現れます。これは、(33 + 34 + ... + 126)+ 56 + 32×45 = 8969、ソフィーゲルマンプライムになります。


私はOPを聞くと、次のようなトークンを数えることができるsin(よう表示するs、i、n、および(タスク12
— lirtosiast

0

Python 3、1タスク、268バイト、非競合

Python 3.5.2でタスク#2を試しました。ゴルフとPythonのコーディングは初めてです

import itertools
def f2(l):
    n=1000000
    l=list(itertools.permutations(l))
    j = len(l)
    m=[None]*j
    while j>0:
        j -= 1
        m[j]= int(''.join(str(i) for i in l[j]))
        l[j]=abs(n-m[j])
    l.sort()
    k=n-l[0]
    return(n+l[0],k)[k in m]

PPCGへようこそ。python 3では、いくつかのステートメントを1行に置くことができます。たとえば、次のように書くx=10;print(x)と、インデントされたセクションの一部に役立ちます。
— ジョージ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.