Rubah Tercepat di Timur

15

Dalam semangat Hello world! tanpa pengulangan

Tulis program yang mencetak string "rubah cokelat cepat melompati anjing malas" dengan baris baru opsional. Seluruh program tidak boleh mengulangi karakter apa pun.

Perhatikan bahwa string yang akan dicetak tidak mengulangi karakter, jadi Anda harus menyiasati batasan itu.

Perhatikan bahwa kondisi yang menang adalah , yaitu jawaban dengan suara terbanyak menang.

Pembaruan: Untuk membuat ini sedikit lebih mudah, pengulangan diperbolehkan tetapi Anda harus berusaha menguranginya. Program dengan pengulangan yang lebih sedikit (atau tanpa pengulangan) lebih diutamakan daripada program dengan pengulangan.

Manishearth
sumber
Saya khawatir ini mungkin terlalu sulit, jika tidak mungkin tidak mungkin. Hello world!tanpa pengulangan cukup sulit sehingga orang harus menggunakan bahasa yang sangat khusus atau sama sekali tidak bisa menyelesaikan tugas sepenuhnya, dan yang satu ini jauh lebih sulit di atas itu.
FireFly
3
Yah, itu pasti tidak mungkin di C. Anda tidak dapat memanggil fungsi atau menggunakan makro.
Oberon
Saya sarankan: cetak string yang diberikan dengan sesedikit mungkin karakter yang diulang .
Primo
@FireFly tidak butuh waktu lama untuk memiliki jawaban :)
SirDarius
3
@martin Tidak, tidak. Pertanyaan terkait mendukung pengulangan sementara pertanyaan ini menghukumnya.
gerrit

Jawaban:

32

Microsoft Word dari 97 hingga 2003 (dan beberapa versi Mac Word) - 10 karakter

Tidak ada pengulangan, tetapi tidak cocok dengan spesifikasi - 10 karakter:

=rand(2,1)

Keluaran:

The quick brown fox jumps over the lazy dog.
The quick brown fox jumps over the lazy dog.

Cocok dengan spesifikasi, selain huruf besar dan tanda baca, satu pengulangan - 10 karakter:

=rand(1,1)

Keluaran:

The quick brown fox jumps over the lazy dog.

Versi Microsoft Word yang lebih baru menggunakan =rand.old(1,1)duplikat ddan 1.

Mungkin ada cara untuk menggunakan bidang {=SUM(3,-2)}sebagai input ke rand () tetapi instalasi saya mengalami masalah dengan bidang - yaitu, mereka tidak berfungsi ...

"Bob" telah mengkonfirmasi bahwa {=SUM(3,-2)}(dengan sedikit kesulitan) dapat digunakan untuk menggantikan yang pertama 1, tetapi =diulang ...

=rand({=SUM(3,-2)},1)

Asalkan Anda mendapatkan Word untuk memperbarui SUMterlebih dahulu, hasilnya adalah:

The quick brown fox jumps over the lazy dog.

sumber
Saya tidak yakin sintaks yang diberikan benar, tetapi saya tidak memiliki sistem setua itu untuk mengujinya. Untuk versi yang lebih baru, seharusnya =rand.old(1,1). Saya kira Anda mencoba menggunakan 3-2 untuk mengganti 1 pertama, tetapi tampaknya tidak berfungsi untuk saya pada tahun 2010 dengan rand.old atau rand.
Iszi
Saya juga tidak punya sistem di sini, akan memeriksa kapan saya pulang. Mungkin perlu menggunakan kawat gigi { ... }sebagai pembatas, tapi saya cukup yakin ekspresi dapat digunakan dalam fungsi apa pun. Jika tidak, saya akan merevisinya!
2
Saya dapat mengkonfirmasi {=SUM(3,-2)}karya - karya di Word 2007. Tetapi metode ini agak rumit. Pertama, Anda harus memasukkan kode bidang (Ctrl + F9). Kemudian, klik kanan => edit bidang => rumus => lanjutan => ketikkan rumus. Karena mengetikkannya secara langsung tidak berfungsi karena alasan apa pun. Sekarang klik di lapangan dan evaluasi dengan Shift + F9. Dan tambahkan=rand.old()
Bob
Apakah perlu untuk digunakan =SUM, atau bisa menggunakan operator aritmatika secara langsung, seperti 3-2?
supercat
@supercat - Kami mencobanya, dan untuk beberapa alasan, Word tidak menerima ekspresi sebagai parameter =rand(), misalnya =rand(3-2,1)akan sempurna. Saya sebenarnya tidak mencoba =rand({=3-2},1), tetapi harus bekerja dengan cara yang sama, dengan duplikasi =.
17

Memotong - 36 karakter

덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬首坼

(mengharapkan input kosong)

Penjelasan:

Push the string "the quick brown ,fo,x, jumps ove,r the lazy dog,"
덆둥긇굵늖꽫긆깲닷덮긂롦닲롸껂걪덖륰댲걯덦넬댢건늆넠닆굺뎒걤닶댬
Retrieve last character from the string (",")
首
Regular expression string-split
坼

Hasilnya adalah daftar ["the quick brown ", "fo", "x", " jumps ove", "r the lazy dog", ""], yang secara otomatis digabungkan menjadi string tunggal untuk output.

Timwi
sumber
1
Saya menghitung 105 byte, belum lagi beberapa pengulangan. Char 235 , misalnya, digunakan 20 kali.
primo
11
"Tidak boleh mengulangi karakter apa pun ", tidak "tidak boleh mengulangi byte".
Plutor
3
Saya tidak heran Timwi, bahasa Anda sendiri sangat cocok untuk tantangan "no karakter berulang".
Pierre Arlaud
13

Perl 6 (76 karakter, tanpa ganda)

Script (akan hancur oleh perangkat lunak board, tapi ada En Space hingga Thin Space dan NL dan LF dan tab)

say EVAL    lc q{<the Quiţk Brown fïX jUmpS ůvťɲ Tɨå ìšzY dOg>~&(127.CHR
x
43)}
  • Ini menggunakan EVAL (terima kasih lagi untuk membuatnya huruf besar) dan <foo bar> mengutip kata-kata yang mendukung semua karakter ruang khusus sebagai pemisah kata.
  • say bergabung dengan daftar string menggunakan ruang, berfungsi dengan baik di sini :)
  • Selanjutnya saya gunakan ~&dan 127 untuk bit shuffle ke ascii biasa. Komplikasi ekstra: 'Ŭ'.lcmenjadi 'ŭ'sehingga menjadi sbukan yang rsaya butuhkan. Menambahkan 128 kali tambahan membantu :)

Versi dengan garis miring terbalik bukan karakter unicode untuk menunjukkan mereka semua berbeda

say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}

Jika Anda ingin memverifikasi semuanya unik, gunakan skrip ini (saya biasanya Qb"string"memiliki kutipan dasar dengan hanya lolos backslash)

.say for 
Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
.comb.Bag.grep(*.value > 1).map: {.key.ord.base(16) ~ " $_"  }

Atau jalankan langsung menggunakan

EVAL Qb"say\x[3000]EVAL\x[9]lc q{<the\x[2003]Qui\x[163]k\x[2004]Brown\x[2005]f\x[EF]X\x[2006]jUmpS\x[2007]\x[16F]v\x[165]\x[272]\x[2008]T\x[268]\x[E5]\x[2009]\x[EC]\x[161]zY\x[200A]dOg>~&(127.CHR\x[0A]x\x[0D]43)}"
Ayiko
sumber
10

PHP - 67 byte

<?echo$g^¶¥€¼½ˆ•.${~˜}=ÂÍåœÌýü¡¦Åþ¾’‹Ï†£‘ƲáºëÓâæݗߙ󖎸·³ø‰ï®ÜØÔ;

Copy-Paste, simpan sebagai Latin-1 (Ansi).

Ini adalah xor-cipher 7-byte, menggunakan string ¶¥€¼½ˆ•untuk garam.

Satu diulang karakter: $.

primo
sumber
Anda dapat mempersingkat 3 karakter lain dengan menggunakan <?=karena Anda sudah menggunakan tag pendek
Kristoffer Sall-Storgaard
Ah, maaf, baru sadar Anda sudah menggunakan =
Kristoffer Sall-Storgaard
@ KristofferSHansen Saya pikir itu mungkin untuk digunakan eval('Return$g=binary;')dalam beberapa bentuk samar (mungkin bit inversi) untuk menghindari $pengulangan, dan kemudian =akan dibebaskan juga.
Primo
Tag pembuka tidak boleh dimasukkan dalam hitungan byte.
TecBrat
@ TechBrat Final ;dapat diganti dengan tag penutup: haruskah itu tidak dihitung juga? Singkatnya, saya tidak setuju. Jika kode Anda tidak berjalan apa adanya, itu bukan program yang lengkap.
primo
0

Haskell, 71 karakter

map(\c->chr$mod(ord c)128)"tŨeఠquiţkĠbŲɯwnȠfѯxРjѵŭŰsܠůvťѲठѴѨѥਠlšzyଠɤկg"

Namun solusi modulo 7-bit lainnya.

Karakter yang berulang:

c 3
d 2
m 2
o 2
r 2
( 2
) 2
" 2

Pertama kali bermain golf dengan Haskell; siapa pun yang lebih berpengalaman dalam bahasa tersebut, merasa bebas untuk meningkat. Saya ingin membuat fungsi anonim point-free untuk menghindari keharusan menyebutkan variabel dua kali, tapi saya tidak tahu apakah itu akan menjadi keuntungan bersih.

Fraxtil
sumber
0

JS, 35

btoa("¶ªº'$nº0ú1驲ޮØ^¬òv")

(Ya ... kutipan ganda diulang. Dan hasilnya buruk. Ini belum merupakan jawaban serius.)

xem
sumber
-2

Skrip Batch: 7 byte

echo %1

Jika skrip bernama hello.bat, ketikkan ini di baris perintah:

hello.bat "The quick brown fox jumps over the lazy dog"
frederick
sumber
Ini, ini sangat ... case sensitive! (Maksudku, itu tidak mencetak dengan tepat apa yang ditanyakan oleh pertanyaan itu.)
Mr Lister
6
Dengan mengetikkan itu di pada baris perintah, Anda mengulangi karakter.
gerrit