hackertyper.net


11

前書き

hackertyper.netは、入力1つにつき3文字の割合で入力すると、Linuxカーネルの暗号セクションから複雑なコードを画面に出力することにより、「ハッキング」(メディアが描写している)をシミュレートするWebサイトです。

チャレンジ

プログラム/関数は、コマンドライン引数としてファイルを受け入れるか、ファイルパスをハードコードするか、コマンドラインまたは関数引数として[ファイル内にある]テキストを受け入れ、hackertyper.netを模倣する必要があります。 STDINまたは同等の機能を介して受信した各文字について、ファイルから3文字(STDOUTまたは同等の機能)を画面に出力します。

EOFに達すると、プログラムはファイルの先頭から文字の出力を再開します(ラップ)。

スペック

簡単にするために、STDINがすでにバッファーなしエコーモードに設定されており、ユーザーがEnterキーを押すまでプログラムに入力を渡さず、入力した文字が表示されないことを想定できます。

ファイルには改行を含めることができますが、入力には改行は含まれません。

これがどのように機能するかを示してC(golfedない)で書かれた小さな例については、を参照してくださいこれを。

緑のテキストと黒の背景は必要ありません。

入出力の例

ファイル:

#include <stdio.h>
int main() { }

入力:

hello world

出力:

#include <stdio.h>
int main() { }

ファイル:

hello

入力:

hello world

出力:

hellohellohellohellohellohellohel

1
1. 2つの文字列を引数として受け取り、別の文字列を返す関数は許可されますか?2.仕様では、入力ごとに3文字を出力するように指定されていますが、例では入力ごとに1文字しか出力されません。
— ドアノブ

1
@Doorknob 1.はい、そして2.それは間違いでした。修正しました。
— Majora320

私たちは持っているファイルとして内のファイル情報を取るために、または我々はまた、関数の引数または同等を通じてその情報を受け取ることができますか?必要な場合、そのファイルの名前は何になりますか?スクリプトから離れた特定のディレクトリに配置されますか、それともスクリプトと同じディレクトリに配置されますか?
— R.ガプス


3
ボーナスは悪くなります。さらに、ペナルティを受ける人はごくわずかであり、それを「ボーナス」と呼ぶのは紛らわしいです。
— CalculatorFeline

回答:


7

ゼリー、4 バイト

ẋ3ṁ@

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

使い方

ẋ3ṁ@    Main link. Arguments: s (input string), t (file string)

ẋ3      Repeat s three times.
  ṁ@    Mold; reshape t like the previous result.
        This repeats the elements of t over and over until the length matches that
        of s repeated thrice.

私はいつも...何、「金型」の手段を不思議に思っていました
— 漏れ修道女

18
@KennyLauパンを捨てる時だと思う
— アレックスA.

4

J、7バイト

$~(3*#)

繰り返されるテキストとユーザーの入力テキストの2つの引数を取ります。

使用法

入力テキストは,、結合することを意味するフォーマットでLFあり、改行文字です。

   f =: $~(3*#)
   ('#include <stdio.h>', LF, 'int main() { }') f 'hello world'
#include <stdio.h>
int main() { }
   'hello' f 'hello world'
hellohellohellohellohellohellohel

オンラインでお試しください。(tryj.tk)




3

JavaScript(ES6)、40バイト

(s,t)=>s.repeat(l=t.length*3).slice(0,l)

where sはデータ文字列でt、user文字列です。前提としてs空であるし、それを繰り返し、lその長さは、少なくともであることを確認するために時間をlそれが最初返すことができるようにl文字を、どこlの3倍の長さですt。


3

Haskell、25バイト

最初の引数は「タイプ」されたもので、2番目は表示するソースです

(.cycle).take.(3*).length

または、(おそらく)より読みやすくするために、ポイントフリーではありません:

h a=take(3*length a).cycle

なにcycle?
— CalculatorFeline

@CatsAreFluffy cycleはリストを取得し、無限に繰り返します。例えばcycle "hi" == "hihihihi..
— マイケル・クライン

考えました$か?
— CalculatorFeline

@CatsAreFluffyどこで使うのかわかりません、何を考えていましたか?
— マイケルクライン

3

Python 3.5、77 65 63バイト:

lambda g,f:''.join((g*len(f))[i:i+3]for i in range(0,len(f)*3,3))

簡単です。2つの引数を受け取る匿名関数。1つ目は「ファイル」(g)、2つ目はユーザーが入力した文字(f)です。これはのすべての3つの文字を含む発電作成gすべてのためのインデックス作成によって発見され、iそしてその後i+3に文字g、iの範囲であることを0=>(length of f)*3。最後に、ジェネレータ内の各オブジェクトを1つの大きな文字列に結合して返します。この関数を呼び出すには、変数に変数を割り当ててから、print()式の中にラップされた変数を呼び出します。したがって、関数の名前がの場合、のqように実行されprint(q(<byte array here>))ます。

オンラインでお試しください!(repl.it)


2

05AB1E、7バイト

コード:

3×g©×®£

説明:

3×        # Multiply the input string three times.
  g       # Take the length.
   ©      # Copy that to the register.
    ×     # Multiply by the second input.
     ®    # Retrieve the length from the register.
      £   # Only keep [0:length * 3] from the new string.

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



2

ルビー、39バイト

Rubyでは$<、コマンドライン引数$stdinが指定されている場合ではなく、指定されたファイルからコマンドライン引数を読み取ります。(ファイルを提供するのを忘れると、$stdinin $<.readからすべてを読み取りSTDIN.read.size、0になるため、空白の出力が得られます。)

$><<($<.read*s=3*STDIN.read.size)[0,s]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.