入力番号; 出力行番号


18

コードゴルフ

完全に本当の裏話:私はウェブサイトwwwで働いている請負業者です。Sky.Netと私たちのタスクの1つは、自己認識プログラムなどを作成することです。上司の話を聞いていなかったのはわかりません。とにかく、コードの自己認識を高めるために、各行番号にどのコードがあるかをITが把握できるようにする必要があります。


チャレンジ

入力を受け取り、そのプログラムまたは関数nのコードをオンラインで返すプログラムまたは関数を作成しますn


ルール

programプログラムまたは関数は少なくとも4行の長さが必要です。各行は一意である必要があります。

input入力は常に、1以上でプログラム/関数の行数以下の正の整数であると仮定できます。

programプログラム/関数の最初の行は、行0ではなく行1です。

programプログラムが入っているファイルにアクセスできません。(誰かが「これは技術的に破るルール#4ではないか?」

➎行を空にすることはできません(スペースが言語で何もしない場合はスペースが含まれます)

➏行を//コメントにすることはできません(任意の<!-styleの/ *)


これはような挑戦です
これはなので、バイト数が最小の提出が勝ちです!




2
あなたはいないすべての行が一意である問題が発生した可能性がある@JonathanAllan
MildlyMilquetoast

「行をコメントにすることはできませんが、効果的なノーオペレーションは大丈夫だと思います」ラムダを終了する中括弧)
値インク

タイトルは「入力番号;その行番号の出力行」の方が良いでしょうか?または、「番号で行を出力」。
パエロエベルマン

回答:


16

Vim、7バイト

1
2
3
4

オンラインでお試しください!

私が知る限り、これはすべてのルールに準拠しています。デフォルトでは、vimでは空のプログラムがすべての入力を出力します。以来

<N><CR>

何も入力せず、入力テキストを変更するものはありません。また、各入力が目的の出力と一致するため、この同じアプローチは任意の行数で機能します。


2
:最初の添加-他の言語で動作しますPyth
ジョナサン・アラン

待って、バイト?Vimはキーストロークで測定されます。
パベル

@JonathanAllan PythがTIOで正しく構成されていないようです。デバッグ出力を見ると、実際に実行されているコードは、コードフィールドのものではなく、引数フィールドのものであることがわかります。これは、実際にそのコードを実行する様子です。
isaacg


2
これはBrachylogでも機能します。
致命的です

9

ルビー、71 70 66バイト

オンラインでお試しください!

->n{
k=["}", "k[-n]%%k.inspect", "k=%s", "->n{"]
k[-n]%k.inspect
}

「不正行為」モード:7 + 1 = 8バイト

-p+1バイトのフラグが必要です。文字通りV回答のコピー。入力された番号を出力します。プログラム全体は事実上、何もしません。

1
2
3
4

何を-pするの?
パベル

@PavelプログラムはSTDINの各行を読み取り$_、プログラムの内容を実行し、$_画面の内容を出力します(STDINの行ごとに繰り返します)。プログラムは何もしないので、実際には単なるUnix catですが、これは、各行が文字通り行番号であるため、1〜4からのすべての入力が行の内容を出力することを意味します。
バリューインク

@Pavelの詳細については、robm.me.uk / ruby​​ / 2013/11/20 / ruby
Value Ink

あなたの「不正行為」の答えが好きです。Perlにもが-pありますが1\n2\n3\n4、有効なPerlプログラムではありません。
ThisSuitIsBlackNot

7

Haskell、69 59バイト

(lines(s++show
 s)
 !!)
s="\n(lines(s++show\n s)\n !!)\ns="

標準のHaskellクインに基づいています。最初の式(最初の3行にまたがる)は、5番目の文字列s(n s++show s)からn番目の行を選択する名前のない関数です。インデックス作成を1ベースにするための+2バイト(不要なルール)。

以下のためのオンラインそれをお試しください!バージョン4バイトを追加する関数に名前を付ける必要があります。


これはルール6に違反しますか?:)
アルバートレンショー

行のインデックス付けは0ベースではないため、ルールでは明示的に1インデックス付けが必要です。
バリューインク

@AlbertRenshaw:固定
nimi

@ValueInk:固定
nimi

@nimi lol、このような「ソリューション」が、これを人気コンテストにしたいと思った理由です。それにもかかわらず、良い仕事です!
アルバートレンショー

5

PowerShell184 172バイト

$v=0,
'$v=0,',
"'`$v=0',",(($q='"{0}`$v=0{0},",(($q={0}{1}{0})-f([char]39),$q)')-f([char]39),$q),
(($z='(($z={0}{1}{0})-f([char]39),$z;$v[$args]')-f([char]39),$z);$v[$args]

オンラインでお試しください!

説明

$v最初の行に配列を作成することから始めます。同じ行で、最初の(0th)要素がに設定され0、コンマ,が定義を継続します。

次の行1は、配列の次の要素()をスクリプトの最初の行の内容を表す文字列に設定し、最初の行を$v[1]返します。

3行目は、最初に配列の3番目の要素(index 2)をスクリプトの2行目を表す文字列に設定し、次に同じ行で3、フォーマット演算子(-f)を使用するクインスニペットを使用して4番目の要素(index )を設定します単一引用符の特定のインスタンス([char]39)およびフォーマットテンプレート文字列をそれ自体に挿入して、3行目全体を再現します。

行4は基本的に同じことを行いますが、配列の作成を終了し、指定された引数を使用してインデックスを作成します。


4

Python 2、104 73 67バイト

6バイトを節約してくれたJonathan Allanに感謝します!

s=\
['print s[input()]or s', 's=\\', 0, 'exec s[', '0]']
exec s[
0]

編集:同じバイト数ですが、このソリューションの方が好きです

オンラインでお試しください!

Value InkのRuby回答のPythonバージョン。

古い回答(67バイト):

1
s=\
['print s[-input()]or s', 0, 's=\\', 1]
print s[-input()]or s

取り除くことにより、保存6 nTIO
ジョナサン・アラン

V:チャレンジ要件をもソースコードの4行の最小値を必要と@ovs
バリューインク

2

CJam19 18 17バイト

1
{'_'~]ri(=}
_
~

オンラインでお試しください!

標準のCJam-quineに基づいています。{...}_~実行...スタック上のブロック自体で(そしてこの場合、さらに1その下に)。それから:

'_'~  e# Push the third and fourth line.
]     e# Wrap all four lines in a list.
ri    e# Read input and convert to integer.
(=    e# Use as index into the lines.

これは美しいです。また、ロジックのスマイリーフェイスエンディング(=ハハ
アルバートレンショー

1

PHP、261バイト

<?php function f($l){
$a="aWYoJGw9PTEpJG09Ijw/cGhwIGZ1bmN0aW9uIGYoXCRsKXsiO2lmKCRsPT0yKSRtPSJcJGE9XCIkYVwiOyI7aWYoJGw9PTMpJG09IlwkYj1cIiR";
$b="iXCI7IjtpZigkbD09NCkkbT0iZXZhbChiYXNlNjRfZGVjb2RlKFwkYS5cJGIpKTt9Pz4iO2VjaG8gJG07";
eval(base64_decode($a.$b));}?>

オンラインでお試しください!!

エンコードされた文字列は次のとおりです。

if($l==1)$m="<?php function f(\$l){";
if($l==2)$m="\$a=\"$a\";
if($l==3)$m="\$b=\"$b\";
if($l==4)$m="eval(base64_decode(\$a.\$b));}?>";
echo $m;

面白い!エンコードされた文字列は何ですか?
アルバートレンショー

1
@Albert Renshaw文字列のデコードバージョンを追加するように編集しました。
Divcy

0

Perl、52バイト

$_=q{print+(split/
/,"\$_=q{$_};
eval")[<>-1]};
eval

これは古典的なクインのシンプルなバリエーションです

$_=q{print"\$_=q{$_};eval"};eval

「ペイロード」はsplit改行にあり、結果のリストにインデックスを付けることで正しい行が選択されます。

Perl、49 48バイト(非競合)

#!/usr/bin/perl -d:A
sub DB'DB{
print${"_<$0"}[<>]}
1

コード用の38バイト(シバンを除くがを含む-d:A)とファイル名用の10バイトDevel/A.pmDevelディレクトリがでなければなりません@INC

技術的には、これ-d:Aはファイルを2回解析するため、ルール4に違反するため、競合しないソリューションです。

これは、使用するデバッガのフックを内のどのperlの店舗、ファイルの行にアクセスするには@{"_<$filename"}、コンパイル時に配列。

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