Tantangannya sederhana: Cetak karakter terakhir, tengah, dan pertama dari kode sumber program Anda, dalam urutan itu.
Karakter tengah didefinisikan sebagai berikut, dengan asumsi panjang sumber n
karakter, dan 1-indeks:
- Jika
n
genap, cetak karaktern/2
-th dann/2 + 1
-th. (abcdef == cd
) - Jika
n
ganjil, cetak(n-1)/2 + 1
karakter ke-5. (abcde == c
)
Aturan
- Diberikan tanpa input, cetak karakter terakhir, tengah, dan pertama dalam kode sumber Anda, dalam formulir
[last][middle][first]
. Ini akan menjadi 3-4 karakter. - Output tidak boleh mengandung spasi spasi tambahan. Namun, jika spasi putih adalah karakter pertama, tengah, atau terakhir, itu harus dicetak seperti itu.
- Kode sumber harus
n >= 3
panjang karakter. - Kode harus terdiri dari
>= 3
karakter unik. - Celah standar dilarang.
- Ini adalah kode-golf , sehingga solusi terpendek dalam karakter menang.
Sampel
# Form: [code] --> [output]
xyz --> zyx
abcd --> dbca
1 --> # not allowed: too short
abcde --> eca
aaabb --> # not allowed: not enough unique characters
System.out.print("S;pr"); --> ;prS
this is a test --> ts t
123[newline]45 --> 53[newline]1
121
untuk banyak bahasa.-
untuk negasi dan secara implisit mencetak dengan linefeed,\n1-
adalah three-byter. Pencarian saya sejauh ini tidak membuahkan hasil.Jawaban:
JavaScript,
97 byteOutput:
NaN
Cobalah online!
sumber
Rumput , 17 byte
Cobalah online!
-2 byte berkat jimmy23013.
Keluaran
www
. Rumput mengabaikan semua karakter selainw
,W
danv
. Karena itu keduanyaV
diabaikan; mereka ada di sana untuk memastikan karakter tengah adalahw
- Saya tidak tahu bagaimana outputv
atauW
di Rumput ... Saya bisa menggunakan karakter lain sebagai gantinyaV
, tetapiV
mempertahankan estetika kode.sumber
x
s (atau karakter non-Grass lainnya, yang diabaikan oleh Grass) untuk memindahkan aw
ke tempat yang benar.wWWwww wWWwWWWww
V
s karena saya merasa lebih cantik. ;-)brainfuck , 17 byte
Cobalah online!
Dengan unsintables ini dapat dikurangi menjadi 7 byte:
␀..␀_.␀
sumber
U
sebagai instruksi. Secara fungsional, kodenya-[>+<---]>.
, jadi output yang diharapkan.--
, yang tidak dikeluarkan.U
s dan penerjemah ini dengan senang hati mengabaikannya. Haruskah setiap jawaban yang memiliki komentar atau banyak spasi (atau apa pun yang tidak penting bagi bahasa) tidak dihitung?U-[>+<-UU--]>...U
? Dalam bentuknya saat ini, kode itu hanya menampilkan satu Uÿ-.ÿ..ÿ
? Itu bisa dicetak dan pendek.Bahasa Pemrograman Shakespeare , 119 byte
Cobalah online!
Mencetak tiga spasi. Tanpa ruang cetak:
Bahasa Pemrograman Shakespeare , 227 byte
Cobalah online!
Seperti jawaban INTERCAL bebas baris baru saya, ini dibuat untuk membuat karakter terakhir dari program sama dengan karakter tengah (walaupun dalam hal ini bukan juga yang pertama), dengan membatalkan golf bagian kedua dari kode sampai mereka pertandingan. (Saya tidak yakin apakah saya bisa membuat 46 dalam byte lebih sedikit atau tidak, atau jika saya bisa bermain golf bagian lain dari babak pertama.)
sumber
!
Python 2 ,
1311 byteUntuk membuat spasi kosong:
Cobalah online!
-2 byte, terima kasih untuk wastl!
sumber
RProgN 2 , 3 byte
Cobalah online!
Saya pikir ini valid?
sumber
1
dan0
didorong ke tumpukan, lalu cetak-pop implisit di akhir program? Ya itu valid[quine]
tantangan lama , sebelum aturan quine diubah.tac
Linux.05AB1E ,
75 byteKeluaran
R \n
.-2 byte dengan mengambil inspirasi dari @ Neil 's Batch jawaban , jadi pastikan untuk upvote dirinya juga!
Cobalah online.
Alternatif 5 byte oleh @Grimy :
Keluaran
12\n
.Cobalah online.
Jawaban awal 7 byte :
Keluaran
?«'
.Cobalah online.
Penjelasan:
sumber
PHP , 9 byte
Cobalah online!
sumber
<?
tag pertama , Anda dapat menggunakan salah satu dari solusi 4-byte sepele seperti1231
- apa pun tanpa karakter khusus sebagai yang pertama dan terakhir, 2 karakter lainnya di tengah. Jawaban Anda mungkin kode PHP jawaban tersingkat .Jelly , 5 byte
Cobalah online!
Outputnya memiliki dua karakter berbeda, tetapi kodenya juga memiliki karakter ketiga.
Versi 4-byte sepele:
sumber
121
juga jawaban sepele yang valid?Excel, 9 byte
Begitu banyak kurung.
Catatan: Karakter tengah yang dikembalikan sebenarnya dapat berupa karakter apa pun karena merupakan kode tengah.
sumber
"
. Sudah selesai dilakukan dengan baik!Ruby , 6 byte
Cobalah online!
Output ini
" "
ditambah baris baru. Kode berakhir dengan a"
, dua karakter tengah adalahdan
"
, dan dimulai dengan baris baru.sumber
DOS / Windows Batch Language, 9 byte
sumber
Ruby ,
119 byteCobalah online!
sumber
Batch, 9 karakter
Karakter tengah dan terakhir keduanya
h
, dan kemudianecho
mencetak baris baru secara default, yang merupakan karakter pertama dari skrip.sumber
PowerShell, 3 byte
Hanya berfungsi di Microsoft Windows.
Outputnya sayangnya 8 byte dalam UTF-16. Tetapi pertanyaannya mengatakan output karakter, dan bukan byte. Bisa dibilang UTF-16 hanyalah salah satu cara yang didukung untuk mewakili karakter di PowerShell. Mereka tidak ditafsirkan berbeda dari file ASCII.
sumber
0x0a != 0x0d != 0x31
:)Bash (
1511 karakter)yang dicetak
|rev
sumber
echo<space>e<space><space>e
akan ditampilkan,e<space>e<newline>
bukane<space>e
, jadi saya sudah menolaknya. Baris baru adalah bagian dari output, itulah sebabnya GrzegorzOledzki menggunakan-n
opsi. Cobaecho -n e-e
online vs Cobaecho e e
online . Dan lagi, tolong jangan edit jawaban orang lain. Jika Anda memiliki golf untuk disarankan, tinggalkan komentar.printf pfp
, tetapi hanya karena kita membutuhkan dua spasi karena definisi karakter tengah, jika tidak akan menjadi 10 ...ArnoldC , 61 byte
Cobalah online!
Jawaban sepele di ArnoldC. Byte ke-31 adalah spasi tepat sebelum string literal.
sumber
Underload ,
9 byte,7 byteTerima kasih kepada Khuldraeseth na'Barya untuk solusi yang lebih baik!
Adapun seperti yang saya tahu, ini sekarang tidak dapat diperbaiki karena:
Cobalah online!
sumber
Bahasa Pemrograman Shakespeare ,
163153 byte-10 byte terima kasih kepada Jo King.
Cobalah online!
Jawaban SPL pertama saya! Keluaran
!BB
.Ada jawaban SPL lain oleh String Tidak Terkait; dalam jawaban itu, mereka hanya menghasilkan spasi dalam 119 byte, atau menampilkan karakter non-spasi dalam 227 byte. Yang ini ada di antaranya, dan juga menghasilkan karakter non-spasi.
Dua trik digunakan di sini:
!
.
!
.
B
, maka judul permainan adalahB
dan saya butuh "besar" kedua menjadi "Besar", yang bekerja karena SPL tidak peka huruf besar-kecil.Karena saya membutuhkan modal
B
dan tanda seru di akhir, saya memutuskan untuk membuat Ajax berteriak lebih keras dan lebih keras melalui adegan.sumber
CJam , 7 byte
Cobalah online!
sumber
0 1 0
lebih pendek dan juga memiliki tiga karakter berbeda (Saya tidak ingin memposting ulang pendekatan Jelly saya: P).Befunge-93 , 7 byte
Cobalah online!
Penjelasan
Output adalah
0 .
sumber
APL (Dyalog Unicode) ,
54 byteProgram lengkap.
Solusi membosankan dari J.Sallé:
Mencetak nomor itu. Solusi yang jauh lebih menarik:
Cobalah online!
APL mengabaikan angka nol di depan, jadi ini hanyalah format yang diskalakan untuk 10 × 10¹ = 100.
sumber
Chef , 447 byte
Cobalah online!
Pengajuan serius,
196177 byteterima kasih untuk A__
Cobalah online!
sumber
Python 3,
19 byte13 byteFungsi cetak menambahkan baris baru secara default sehingga kode dimulai dengan baris baru. Karakter terakhir dari kode adalah ")" sehingga dicetak terlebih dahulu. Untuk membuat jumlah karakter tidak rata, spasi dimasukkan sebelum argumen fungsi cetak. Mohon maaf atas kelonggaran kode ini.
Output:
)(\n
Cobalah online.
sumber
print
dan spasi di dalamprint
setelahnya")("
. Output:)(
dengan baris baru di akhir.end
parameter default dari fungsi cetak, tidak masuk hitungan.Spasi ,
3129 byte-2 byte terima kasih kepada @RobinRyder .
Huruf
S
(spasi),T
(tab), danN
(baris baru) ditambahkan hanya sebagai penyorotan.[..._some_action]
ditambahkan sebagai penjelasan saja.Cobalah online (dengan spasi, tab, dan hanya baris baru).
Berisi no-op
a
(bisa berupa karakter non-spasi apa pun) untuk membuat panjangnya aneh. Ini ditambahkan sebelum separuh pertama dari program sehingga karakter tengah adalah spasi juga, karena karakter tengah akan menjadi baris baru jika berada di bagian kedua dari program. Semua karakter non-spasi putih diabaikan dalam program-program Ruang Putih.sumber
Haskell , 17 byte
Cobalah online!
sumber
MathGolf ,
54 byte-1 byte dengan menggunakan solusi sepele yang disajikan oleh @ErikTheOutgolfer dalam jawaban Jelly-nya , yang bekerja untuk bahasa apa pun dengan output implisit tanpa tertinggal baris baru.
Cobalah online.
Jawaban 5 byte asli :
Keluaran
x ù
.Cobalah online.
Penjelasan:
sumber
Brain-Flak , 11 byte
Cobalah online!
Penjelasan
Kita harus meletakkan 3 hal di tumpukan. Cara tercepat untuk melakukannya adalah dengan meletakkan 3 1s (atau nol) di tumpukan. Sekarang karena
(kode 1) tidak melakukan apa pun di Brain-Flak kita dapat menambahkan ini ke program di tempat pertama dan terakhir. Sekarang ini terasa agak curang, jadi inilah dua jawaban lagi yang menurut saya kurang curang.
Mencetak kawat gigi, 31 byte
Cobalah online!
Jawaban ini mencetak kawat gigi sehingga karakter yang dicetak benar-benar relevan dengan kode, itu memang memiliki satu karakter padding untuk membuat panjangnya aneh sehingga kita hanya perlu mencetak 1 karakter tengah.
Hanya mengandung kawat gigi, 32 byte
Cobalah online!
Ini adalah program kawat gigi hanya sumber dan (akibatnya) output terdiri sepenuhnya dari kawat gigi (karakter Brain-Flak benar-benar peduli).
sumber
AsciiDots - 9 byte
Keluaran:
.$.
Kode dimulai dengan
.
, diakhiri dengan.
, dan karakter tengah adalah a$
. Kutipan tunggal di tengah menetapkan mode cetak titik untuk sekadar membaca karakter langsung ke aliran output.Mungkin saja ini bisa dibuat lebih kecil, tapi saya mulai ragu itu bisa. Untuk mencetak tiga karakter, kutipan tunggal harus digunakan, karena kutipan ganda akan membutuhkan akhir dari string untuk menghasilkan. Namun, ini berarti bahwa kutipan tunggal harus a) diikuti oleh tiga karakter dan b) tidak dapat menjadi karakter pusat. Untuk mengurangi ini menjadi tujuh byte, saya mempertimbangkan untuk mencoba menggunakan kembali titik sebagai salah satu karakter yang dicetak (semacam program quine AsciiDot). Namun, saya menemukan bahwa urutan terpendek yang tersedia untuk dicetak adalah
($'
yang harus mencetak empat karakter dalam ruang tiga, atau tiga karakter dalam ruang empat. Saya juga mencoba beberapa metode alternatif hacky seperti mencoba mencetak nilai titik (yaitu 0) sebagai salah satu karakter. Walaupun mungkin ada beberapa sistem yang berfungsi, saya menemukan ini agak rumit dan besar. Jadi, saya pikir di atas adalah solusi terkecil. (Saya akan memperbarui jika saya menemukan sesuatu yang lebih kecil)sumber
/'$'-.[newline]\.
Cobalah online!MATLAB, 13
15byteKeluaran
) d
Versi sebelumnya (15 byte, keluaran yang kurang ketat):
Keluaran
'''
sumber
ans =\n '''\n
. Biasanya itu bukan masalah tetapi tantangan ini tampaknya menetapkan standar yang lebih ketat. Tapi kemudian saya mungkin mengartikan tantangan itu salah.