hackertyper.net


11

Giriş

hackertyper.net , girilen her biri 3 karakterlik bir oranda yazarken Linux çekirdeğinin kripto bölümünden ekrana karmaşık kodlar vererek "hacklemeyi" simüle eden bir web sitesidir.

Meydan okuma

Programınız / işleviniz bir dosyayı komut satırı bağımsız değişkeni olarak kabul etmeli, dosya yolunu sabit olarak kodlamalı veya [dosyada bulunan] metni komut satırı veya işlev bağımsız değişkeni olarak kabul etmeli ve hackertyper.net'i taklit etmelidir. STDIN veya eşdeğeri aracılığıyla alınan her biri için dosyadan ekrana 3 karakter (STDOUT veya eşdeğeri) çıktı vererek.

EOF'a ulaşıldığında, program dosyanın başlangıcından itibaren karakterleri yeniden çıkarmaya başlamalıdır (sarma).

gözlük

Basitlik amacıyla, STDIN'in önceden bir arabellek ve yankı moduna ayarlanmadığını varsayabilirsiniz; bu, kullanıcı programınıza girdi girmeden ve yazdığınız karakterleri görüntülemeden önce girene kadar beklemez.

Dosya yeni satırlar içerebilirken, girdi yeni satırlar içermeyecektir .

(Golfed değil) C dilinde yazılmış bir küçük Örneğin bu eserler nasıl gördüğünü gösterir bu .

Yeşil metin ve siyah arka plan gerekmez.

Örnek giriş ve çıkış

Dosya:

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

Giriş:

hello world

Çıktı:

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

Dosya:

hello

Giriş:

hello world

Çıktı:

hellohellohellohellohellohellohel

1
1. İşlevlere izin verilir (iki dizeyi bağımsız değişken olarak alır ve başka bir dize döndürür)? 2. Spesifikasyonunuz her giriş için üç karakter çıktısını söylüyor, ancak örnekler her giriş için yalnızca bir karakter çıktısı veriyor.
Kapı tokmağı

1
@Doorknob 1. Evet ve 2. Bu bir hataydı, düzeltildi.
Majora320

Yapmamız sahip bir dosya olarak dosya bilgilerini almak ya da fonksiyon parametresi veya eşdeğeri aracılığıyla bu bilgileri alabilir? Gerekirse, o dosyanın adı ne olacak? Komut dosyalarımızdan uzakta belirli bir dizinde mi yoksa komut dosyalarımızla aynı dizinde mi olacak?
R. Kap


3
Bonuslar kötü. Ve ayrıca çok az insan cezayı alacak ve bunu "bonus" olarak adlandırmak kafa karıştırıcı.
CalculatorFeline

Yanıtlar:


7

Jöle , 4 bayt

ẋ3ṁ@

Çevrimiçi deneyin!

Nasıl çalışır

ẋ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.

Her zaman "kalıp" ne anlama geldiğini merak ettim ...
Leaky Nun

18
@KennyLau Sanırım ekmeği atmanın zamanı geldi.
Alex

4

J , 7 bayt

$~(3*#)

Yinelenecek metin ve kullanıcının giriş metni olmak üzere iki argüman alır.

kullanım

Girdi metni, ,birleştirilecek demektir ve LFyeni satır karakteri olarak biçimlendirilir .

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

Çevrimiçi deneyin. (Tryj.tk)


4

Jöle, 9 bayt

⁴L×3
ẋ¢ḣ¢

Çevrimiçi deneyin!

⁴L×3     Define nilad as ¢:

 L       length of
⁴        second argument
  ×3     tripled


ẋ¢ḣ¢     Main chain:

         the first argument (implicit)
ẋ        repeated
 ¢       ¢ many times
  ḣ¢     then get the first ¢ characters of it.

2
Sanırım Dennis'in cevabından biraz "jöle" misin?
Dennis van Gils

Jelly is evil ..
CalculatorFeline


3

JavaScript (ES6), 40 bayt

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

sVeri dizgisi ve tkullanıcı dizgisi nerede . Varsayım sboş değildir ve luzunluğunun en azından lilk lkarakterin lüç katı uzunluğa dönebilmesi için uzunluğunu garanti eder t.


3

Haskell, 25 bayt

İlk argüman "yazılan", ikincisi görüntülenecek kaynak

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

Ya da (muhtemelen) daha iyi okunabilirlik için anlamsız:

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

Nedir cycle?
CalculatorFeline

@CatsAreFluffy cyclebir liste alır ve sonsuza kadar tekrar eder. Örn.cycle "hi" == "hihihihi..
Michael Klein

Düşündün mü $?
CalculatorFeline

@CatsAreFluffy Nerede kullanacağımdan emin değilim, ne düşünüyordun?
Michael Klein

3

Python 3,5, 77 65 63 bayt:

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

Yeterince basit. İlki "dosya" ( g), ikincisi kullanıcı ( f) tarafından girilen karakterler olmak üzere iki argüman alan anonim bir işlev . Sonra bu her üç karakter içeren bir jeneratör oluşturur gher için endeksleme tarafından bulunmuştur, ive sonra i+3karakter g, iaralığındadır 0=>(length of f)*3. Son olarak, jeneratördeki her nesneyi büyük bir dizeye geri döndürür. Bu işlevi, ona bir değişken atayarak ve ardından bir print()ifadenin içine sarılmış değişkeni çağırarak çağırırsınız . Yani işlevin adı qolsaydı, bu şekilde yürütülürdü print(q(<byte array here>)).

Çevrimiçi deneyin! (Repl.it)


2

05AB1E , 7 bayt

Kod:

3×g©×®£

Açıklama:

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.

Çevrimiçi deneyin! .


2

Jolf, 10 bayt

]*iγl*I30γ

Burada deneyin!

açıklama

]*iγl*I30γ
 *i        repeat string 1
    l*I3    the length of the other string * 3
   γ        γ = (^)
]       0γ  (^).slice(0, γ)

2

Ruby, 39 bayt

Ruby'de, $<verilen dosya yerine verilen dosyadan komut satırı argümanlarında okur $stdin. (Bir dosyayı tedarik unutursanız dışında her şeyi okur, çünkü, boş çıktı almak $stdiniçinde $<.readbu şekilde ve STDIN.read.size0 olacaktır)

$><<($<.read*s=3*STDIN.read.size)[0,s]
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.