Menjejalkan Gramming - Dua Belas Tugas Tweet

42

Bos Anda baru saja mengirimi Anda daftar 12 tugas pemrograman yang perlu ia selesaikan secepat mungkin. Tugasnya cukup sederhana tetapi bos Anda, menjadi taipan perangkat lunak muda yang disusui oleh jejaring sosial, menegaskan bahwa solusi Anda dapat masuk dalam satu tweet Twitter .

Ini berarti bahwa Anda hanya memiliki kode senilai 140 byte untuk menyelesaikan semua tugas, rata-rata 11,67 byte per tugas. (Ya, Twitter menghitung karakter tetapi bos Anda secara khusus mengatakan byte.)

Anda menyadari bahwa tidak ada cara untuk menyelesaikan semua 12 tugas dalam 140 byte tetapi Anda curiga bos Anda tidak akan benar-benar menguji semua solusi Anda. Jadi Anda melanjutkan untuk menyelesaikan tugas sebanyak yang Anda bisa, benar-benar melewatkan beberapa dari mereka. Pola pikir Anda adalah bahwa tidak peduli yang bagian dari tugas Anda menyelesaikan, hanya hal-hal yang subset adalah sebagai besar mungkin .

Berapa banyak tugas yang dapat Anda selesaikan?

Tantangan

Tulis hingga 12 program yang berbeda, yang masing-masing secara akurat menyelesaikan salah satu dari 12 tugas yang tercantum di bawah ini. Jumlah kumulatif dari panjang program-program ini mungkin tidak melebihi 140 byte

Atau, Anda dapat menulis sebuah program tunggal yang panjangnya tidak lebih dari 140 byte yang membutuhkan integer dari 1 hingga 12 dan (idealnya) menghasilkan untuk menyelesaikan tugas yang sesuai, mengambil lebih banyak input seperlunya. Tidak semua tugas perlu dikerjakan, tetapi hanya tugas-tugas yang diperhitungkan dalam skor Anda. Tugas yang tidak berfungsi diizinkan untuk melakukan kesalahan atau melakukan hal lain.

Dalam kedua kasus, "program" mungkin sebenarnya adalah fungsi yang mengambil input sebagai argumen atau meminta untuk itu dan mencetak atau mengembalikan output. Jadi, misalnya, Anda dapat menulis fungsi 140 byte yang terlihat seperti f(taskNumber, taskInput), atau Anda dapat menulis potongan kode terpisah untuk setiap tugas, beberapa sebagai fungsi dan beberapa sebagai program yang lengkap.

Detail lainnya:

  • Semua kode harus ditulis dalam bahasa yang sama.

  • Seperti biasa, input harus berasal dari stdin, baris perintah, argumen fungsi, atau apa pun yang biasa untuk bahasa Anda. Output dicetak ke stdout atau alternatif terdekat bahasa Anda, atau dikembalikan dalam jenis yang sesuai.

  • Jumlah yang wajar dari format input baik-baik saja; mis. kutipan di sekitar string atau \nbukannya baris baru yang sebenarnya.

  • Output harus persis seperti apa yang dipanggil tanpa pemformatan atau ruang kosong. Pengecualian adalah opsional single trailing newline.

  • Kode yang hanya berjalan di lingkungan REPL bukan merupakan program atau fungsi.

  • Anda tidak boleh menulis banyak program yang menyelesaikan banyak tugas. Entah itu satu program yang (idealnya) menyelesaikan semua tugas, atau (idealnya) 12 program yang masing-masing menyelesaikan satu tugas.

  • Memposting solusi tugas yang tidak Anda tulis atau hanya sedikit dimodifikasi tidak diizinkan tanpa memberikan atribusi kepada penulis asli, dan idealnya juga mendapatkan izin. Jika jawaban Anda terutama menyusun solusi terpendek dari semua jawaban lain maka itu harus menjadi wiki komunitas.

Mencetak gol

Kiriman yang menyelesaikan sebagian besar tugas adalah pemenang. Jika dua pengiriman mengikat, satu dengan byte terkecil menang. Jika jumlah byte diikat, pengiriman sebelumnya menang. Jawaban wiki komunitas tidak diizinkan untuk menang.

Pastikan untuk memberi tahu kami tugas mana yang Anda selesaikan, bukan hanya berapa banyak!

Handicap untuk pegolf:

Kemungkinan tantangan ini akan didominasi oleh bahasa golf . Banyak bahasa mungkin mengalami kesulitan menyelesaikan bahkan satu atau dua tugas dalam 140 byte. Karenanya, Anda dapat mengirimkan jawaban non-kompetitif dengan batasan 3 tweet, yaitu 420 byte. Semua aturan lainnya tetap sama.

Tugas

Tugas 1 - Bisakah Tiga Angka Membentuk Segitiga?

Ambil tiga bilangan bulat positif dan hasilkan nilai true / falsy yang menunjukkan apakah tiga garis dengan panjang itu bisa membentuk segitiga . Anda tidak boleh berasumsi angkanya datang dalam urutan tertentu.

Contoh kebenaran (satu per baris):

20 82 63
1 1 1
2 3 4
1 2 2

Contoh-contoh palsu:

6 4 10
171 5 4
1 1 2
1 2 3

Tugas 2 - Terdekat Dengan Satu Juta

Diberikan string tepat 7 digit desimal (0-9), atur ulang mereka untuk mendapatkan angka sedekat mungkin dengan satu juta. Artinya, abs(1000000 - rearrangedNumber)harus diminimalisir.

Cetak atau kembalikan angka yang dihasilkan sebagai integer, bukan string (jadi tidak boleh ada nol terkemuka kecuali itu norma untuk bahasa Anda).

misalnya input 9034318harus menghasilkan 984331(dan tidak 1033489).

2893984harus menjadi 2348899.

0001000harus menjadi 1000000.

0000020harus menjadi 200000.


Tugas 3 - Simulator Keyboard Sederhana

Ambil string huruf kecil (az), spasi, dan kurung sudut <>. Baca kiri ke kanan, string ini mewakili tombol-tombol yang ditekan pada keyboard standar sementara editor teks yang awalnya kosong terbuka. Huruf dan spasi sesuai dengan tombol normal tetapi <sesuai dengan tombol panah kiri dan >tombol panah kanan, yang keduanya menggerakkan kursor saat ditekan.

<memindahkan kursor satu karakter ke kiri, atau tidak melakukan apa-apa jika kursor berada di awal string.
>memindahkan kursor satu karakter ke kanan, atau tidak melakukan apa pun jika kursor berada di akhir string.

Keluarkan string yang akan berada di editor teks setelah semua tombol dalam string input telah ditekan. Mengeluarkan kode pelarian untuk memindahkan kursor tidak diizinkan.

Akan selalu ada setidaknya satu karakter kunci non panah dalam input.

misalnya input ui<<q>>ck <<<<<<the<<<<>>> >>>>>>>>brown x<o<fharus menghasilkan the quick brown fox.

op<<l>>t<<<lam>>>>>>imi<<<><>>>zer<<<<<<<<<<<<<<<<<<>>><>mharus memberi llammoptimizer.

e< <c<b<aharus memberi abc e.

<<<>><><<><toast>><<>><><<>><harus memberi toast.


Tugas 4 - Surat FILTHE

Dalam banyak font, 6 dari huruf besar huruf bahasa Inggris alfabet seluruhnya terdiri dari garis horizontal dan vertikal: E, F, H, I, L, dan T. Kami akan memanggil ini surat FILTHE.

Ambil string huruf besar (AZ) dan hitung jumlah baris dalam huruf FILTHE, hasilkan bilangan bulat yang dihasilkan.

E, F, H, I, L, Dan Tmemiliki 4, 3, 3, 3, 2, dan 2 jalur masing-masing.

misal GEOBITSmemiliki 4 + 3 + 2 = 9 baris bagian dari huruf FILTHE (untuk .E..IT.), jadi hasilnya seharusnya 9.

ABCDEFGHIJKLMNOPQRSTUVWXYZharus keluar 17.

ABCDGJKMNOPQRSUVWXYZharus keluar 0.

FILTHYLINESINLETTERSharus keluar 39.


Tugas 5 - Alex Recursive A.

Moderator kami Alex A. memiliki inisial yang cukup misterius, "A".

Sekarang saya tidak yakin, tapi saya pikir A.singkatannya .A xelA. Dan saya juga cukup yakin bahwa di .Asana ada singkatan Alex A..

Dengan demikian untuk mendapatkan nama lengkap Alex kita harus memperluas A.'dan .A':

Alex A. -> Alex [A.] -> Alex [.A xelA] -> Alex .A xelA -> Alex [.A] xelA -> Alex [Alex A.] xelA -> Alex Alex A. xelA -> etc.

Mintalah program Anda menerima bilangan bulat non-negatif dan perluas Alex A.itu berkali-kali, menghasilkan string yang dihasilkan.

Jadi
0menjadi Alex A.,
1menjadi Alex .A xelA,
2menjadi Alex Alex A. xelA,
3menjadi Alex Alex .A xelA xelA,
4menjadi Alex Alex Alex A. xelA xelA,
5menjadi Alex Alex Alex .A xelA xelA xelA,
dan seterusnya.

(Saya membuat ini karena saya merasa buruk karena secara tidak sengaja meninggalkan Alex dari tantangan mod upeti saya .: P)


Tugas 6 - Rotasi Numpad

Ambil bilangan bulat dari 1 hingga 9 inklusif (Anda dapat menganggapnya sebagai string). Output 3 × 3 kuadrat digit

789
456
123

diputar dalam peningkatan 90 ° sehingga digit input muncul di mana saja di baris atas. Kapan 5input setiap rotasi adalah output yang valid karena 5tidak dapat diputar ke atas.

misal kapan 3input, keduanya

963
852
741

dan

321
654
987

adalah output yang valid.

Untuk input 4, hanya

147
258
369

adalah output yang valid.


Tugas 7 - Membagi Digit Menjadi Puluhan

Ambil string nonempty digit desimal (0-9) dan hasilkan nilai yang sebenarnya jika dapat dipecah menjadi bagian-bagian yang bersebelahan di mana semua digit di setiap bagian dijumlahkan dengan tepat menjadi 10. Jika ini tidak mungkin, hasilkan nilai palsu.

misalnya 19306128dapat dibagi seperti 19|3061|28, bagian semua menjumlahkan ke 10 (1 + 9, 3 + 0 + 6 + 1, 2 + 8), sehingga nilai yang sebenarnya harus menjadi output.

Contoh kebenaran (satu per baris):

19306128
073
730
0028115111043021333109010
2222255

Contoh-contoh palsu:

6810410
9218
12341
5222225
000

Tugas 8 - Jam Persegi

Ambil string multiline yang berukuran konsisten.

Keluaran 12jika inputnya adalah

 _ _
| | |
|_ _|

Keluaran 3jika inputnya adalah

 _ _
| |_|
|_ _|

Keluaran 6jika inputnya adalah

 _ _
| | |
|_|_|

Keluaran 9jika inputnya adalah

 _ _
|_| |
|_ _|

Tidak ada input kasus lain.


Tugas 9 - Seni Braket

Ambil di string 4 byte yang berisi salah satu dari masing-masing kurung kiri (, [, {, dan <dalam urutan apapun.

Tambahkan kurung siku yang sesuai sehingga panjang string 8 byte dan memiliki garis simetri vertikal. misalnya [<({menjadi [<({})>].

Kemudian balikkan setiap braket dalam string ini. misalnya [<({})>]menjadi ]>)}{(<[.

Keluarkan string braket 8 byte asli dengan versi terbalik di atas dan di bawah pada baris terpisah.

Jadi output akhir untuk input [<({adalah

]>)}{(<[
[<({})>]
]>)}{(<[

Demikian pula, output untuk <({[seharusnya

>)}][{(<
<({[]})>
>)}][{(<

Input (<<[tidak valid karena tidak {ada dan ada tambahan <.


Tugas 10 - Membatasi Perimeter

Ambil kotak teks persegi panjang (berukuran paling kecil 1 × 1) yang terbuat dari .yang mewakili ruang kosong dan Xyang mewakili ubin padat. Sel di luar batas grid dianggap kosong. Anda dapat mengasumsikan masing-masing dari 4 baris tepi kolom dan kolom akan mengandung setidaknya satu X.

mis. input yang valid mungkin:

XXX.....X.....
X..X...X.X....
XXX.....X....X

Keluarkan kisi teks segi empat lain di mana setiap sel kosong yang bertetangga dengan Xortogonal atau diagonal, termasuk di luar kisi input , menjadi o. Jadi intinya pembatas odigambar di sekitar semua bagian ubin padat. Grid baru tidak boleh lebih besar dari yang seharusnya.

Jadi output dari contoh di atas adalah:

ooooo...ooo.....
oXXXoo.ooXoo....
oXooXo.oXoXo.ooo
oXXXoo.ooXoo.oXo
ooooo...ooo..ooo

Demikian pula, output dari input XXX..X.Xseharusnya

oooooooooo
oXXXooXoXo
oooooooooo

dan keluaran

oooooooooo.
oXXXooXoXo.
oooooooooo.

tidak valid karena kolom paling kanan yang kosong tidak perlu.

Anda dapat menggunakan 3 berbeda ASCII printable karakter di tempat ., Xdan o.


Tugas 11 - Sator Square

Output Sator Lapangan :

SATOR
AREPO
TENET
OPERA
ROTAS

Salah satu hurufnya mungkin huruf kecil atau besar, jadi

SatOR
aRePO
tenet
OPERa
RoTaS

juga merupakan output yang valid.

Tidak ada input.


Tugas 12 - Tweet Utama

Tidak mengambil input tetapi menghasilkan string ASCII 140 byte yang dapat dicetak yang mengandung setidaknya satu dari masing-masing dari 95 karakter ASCII yang dapat dicetak. (Jadi 45 karakter akan menjadi duplikat.)

Jumlah kode karakter dari semua 140 byte dalam string ini harus berupa perdana Sophie Germain , yaitu bilangan prima psedemikian sehingga 2p+1juga bilangan prima. Kode karakter untuk ruang adalah 32, 33 untuk !, 34 untuk ", dan seterusnya hingga 126 untuk ~. Jumlahnya dapat dihitung dengan Python sebagai sum(map(ord, myString)).

Contoh output adalah:

! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

Jumlah kode karakter adalah prime 12203 yang prime safe-nya adalah 24407.

Hobi Calvin
sumber
7
Saya akan terkesan jika ada yang benar-benar berhasil menyelesaikan semuanya dalam waktu kurang dari 140 byte, bahkan dengan CJam / Pyth
Fatalize
9
Saya merasa terhormat berada di .a ni eb ot deronoh ma Saya ... tantangan Anda. : P
Alex A.
Apakah tugas diperbolehkan diakhiri dengan kesalahan setelah hasilnya dicetak ke output?
torcado
1
Bagaimana seharusnya kita menghitung byte dari imports? Katakanlah saya menulis 5 fungsi di mana 2 membutuhkan modul yang sama (misalnya import Math), apakah ini dihitung dua kali?
nimi
2
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena ini adalah tantangan multi-bagian dengan interaksi yang tidak memadai antara bagian-bagian
pppery

Jawaban:

10

Pyth, 9 tugas dalam 136 byte

Tugas 1: 7 byte

<-F_SQ0

Demonstrasi

Sortir dalam urutan menurun ( _SQ), lipat pengurangannya ( a-b-c), periksa apakah hasilnya negatif.

Tugas 2: 14 byte

sho.a-sN^T6.pz

Demonstrasi

Bentuk semua permutasi string ( .pz), urutkan ( o) berdasarkan nilai absolut dari selisih ( .a-) antara angka ( sN) dan satu juta ( ^T6).

Ambil string pertama ( h), dan ubah menjadi num. ( s).

Tugas 4: 19 byte

s/L+\EPP*3"EFHILT"z

Demonstrasi

Ulangi "EFHILT"tiga kali ( *3), hapus trailing LT( PP), dan tambahkan E( +\E). Petakan setiap huruf dalam input dengan jumlah kemunculannya dalam string itu. ( /L ... z). Jumlah. ( s).

Tugas 5: 16 byte

u+"Alex "_GhQ".A

Demonstrasi

Dimulai dengan "A.", mundur, dan tambahkan "Alex "ke awal, masukkan +1 kali.

Tugas 7: 13 byte

}Y-RTsMM./sMz

Ubah string input menjadi daftar angka 1-digit ( sMz). Bentuk semua partisi ( ./). Jumlahkan setiap elemen dari setiap partisi ( sMM). Hapus semua 10 dari setiap sublist ( -RT). Periksa apakah ini mengosongkan salah satu sublists dengan memeriksa apakah daftar kosong ada di daftar keseluruhan ( }Y).

Tugas 8: 11 byte

*3h%%CQC\Ç4

Demonstrasi

Modulo magic. Konversikan ke angka ( CQ), ambil mod 199 ( C\Ç= 199), dan ambil mod 4. Kemudian tambahkan 1, dan kalikan dengan 3.

Tugas 9: 21 byte

J+Xz"<{[()]}>")_zJ_JJ

Demonstrasi

Pertama, kami membuat baris pertama, yang terdiri dari input yang diterjemahkan ke karakter mirror ( Xz"<{[()]}>")), diikuti oleh input terbalik ( + ... _z), dan simpan ke J. Kemudian cetak garis itu, kebalikannya, dan garis itu lagi ( J_JJ).

Tugas 11: 22 byte

+J"SATOR
AREPO
TEN"t_J

Demonstrasi

Cukup cetak string dan pembalikannya, tetapi jangan menduplikasi tengahnya N.

Tugas 12: 13 byte

++G*19\3srd\

Demonstrasi

Ada karakter invisble DEL( 7F) di akhir kode.

Ini mencetak

abcdefghijklmnopqrstuvwxyz3333333333333333333 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

yang memiliki jumlah karakter 11321. Terdiri dari G, alfabet, 19 3detik, dan semua karakter ASCII yang dapat dicetak.

isaacg
sumber
28

CJam, 8 9 tugas dalam 140 byte

Pertama, berikut adalah skrip yang dapat Anda gunakan untuk mengurutkan solusi Anda dan memberi tahu Anda mana yang akan masuk ke dalam tweet:

{\s\Se[oSo}:F;
qN/ee{W=,}${)_,_T+:T140>X*_{0:X;}*'=@11+*N+*o\~)YF_,ZFTZFoNo}/

Cukup tempelkan 12 solusi Anda ke input, satu di setiap baris. Jalankan di sini. Kolom pertama adalah nomor tugas, yang kedua ukurannya (dalam karakter - Anda harus memperbaikinya sendiri jika itu berbeda dari jumlah byte), yang ketiga adalah ukuran kumulatif. Program yang masuk ke dalam tweet dipisahkan dari yang lain dengan satu baris ===.

Bagi saya, hasilnya terlihat seperti ini:

 1   7   7 q~$~\->
 8  10  17 qDbJ%5/)3*
12  12  29 ',32>_51>'d
 7  13  42 Aq{~-Ace|}/N&
 2  15  57 qe!{~1e6-z}$0=~
 4  19  76 q"FIHEELT"3*H<fe=:+
 5  20  96 ".A"q~){" xelA"+W%}*
 9  22 118 q_{_')>+)}%W%+_W%N@N3$
11  22 140 "SATOR\AREPO\TEN"_W%1>
====================================
 6  25 165 9,:)s3/zq~))3mdg*{W%z}*N*
 3  43 208 LLq{_'=-z({+}{'=>_)$\[{)@+\}{\(@\+}]=&}?}/\
10  45 253 0XW]_m*qN/{'.f+W%z}4*f{\~@m>fm>N*}(\{8f^.e>}/

Jadi, inilah tugas-tugas yang saat ini dapat saya masukkan ke dalam tweet.

Tugas 1 - Bisakah Tiga Angka Membentuk Segitiga? - 8 7 byte

Terima kasih kepada jimmy23013 untuk menghemat 1 byte.

q~$~\->

Suite uji.

Input diharapkan daftar gaya CJam.

Ini cukup mudah: periksa apakah sisi terbesar lebih pendek dari jumlah dua lainnya. Atau setara, periksa bahwa sisi terpendek lebih panjang dari perbedaan dua lainnya:

q~  e# Read and eval input.
$~  e# Sort the values and dump them on the stack.
\-  e# Subtract the middle value from largest.
>   e# Check if the smallest value is greater than that.

Tugas 2 - Terdekat Dengan Satu Juta - 15 byte

qe!{~1e6-z}$0=~

Suite uji.

Brute force sederhana:

q        e# Read input.
e!       e# Get all permutations.
{        e# Sort by...
  ~      e#   Evaluate the permutation to get its numerical value X.
  1e6-z  e#   abs(X - 1,000,000)
}$
0=       e# Pick the first element (which minimises the difference)
~        e# Evaluate it to get rid of the leading zeroes.

Tugas 4 - Surat FILTHE - 21 19 byte

Terima kasih kepada jimmy23013 untuk menghemat 2 byte.

q"FIHEELT"3*H<fe=:+

Suite uji.

Idenya adalah untuk membuat string yang berisi masing-masing huruf FILTHE satu kali untuk setiap baris ortogonal mereka. Ini dilakukan melalui beberapa manipulasi string yang lucu:

q          e# Read the input.
"FIHEELT"  e# Push this string. It first contains the 3-line letters, then the 2-line 
           e# letters, where we include 'E' twice to make it count for 4.
3*         e# Repeat 3 times: "FIHEELTFIHEELTFIHEELT"
H<         e# Truncate to 17 characters: "FIHEELTFIHEELTFIH". This is chosen such that
           e# it discards the third repetition of the 2-line letters.
fe=        e# For each character in the input, count its occurrences in this new string.
:+         e# Sum them all up.

Tugas 5 - Alex Recursive A. - 27 20 byte

".A"q~){" xelA"+W%}*

Suite uji.

Melaksanakan substitusi A.dan .Alangsung terlalu mahal. Sebagai gantinya, kami perhatikan bahwa kami hanya perlu menangani satu kasing, jika kami membalikkan senarnya setiap kali. Lebih jauh lagi, menambahkan Alex(dan spasi) setiap waktu sama dengan memperluas inisial. Kita dapat menyimpan byte lain dengan menambahkan yang terbalik sebelum membalikkan string:

".A"        e# Start with ".A" (the -1st iteration if you like).
q~)         e# Read input, eval, increment (so the following block is run at least once.)
{           e# Repeat this block that many times...
  " xelA"+  e#   Append " xelA".
  W%        e#   Reverse the string.
}*

Tugas 7 - Membagi Digit Menjadi Puluhan - 18 16 13 byte

Aq{~-Ace|}/N&

Suite uji. (Dengan tanda kurung di sekitar setiap output.)

Tidak sepenuhnya ramah pengguna: nilai kebenaran adalah baris baru, nilai palsu adalah string kosong.

Ide dasarnya sederhana: tambahkan digit ke total berjalan yang kita reset setiap kali tepat 10. Total harus nol pada akhir input. Sebagai permulaan ternyata lebih pendek dari total pada 10 dan kurangi digit, atur ulang total setiap kali kita menekan 0. Namun, kita perlu memastikan bahwa kita tidak mengembalikan sesuatu yang benar ketika input semua nol. Cara terpendek yang saya temukan untuk melakukannya adalah dengan mereset total ke karakter dengan titik kode 10 (linefeed), dan kemudian periksa di akhir bahwa kita benar-benar memiliki karakter itu di stack, dan bukan angka 10. Ini berfungsi, karena bilangan bulat nol dan karakter nol (byte nol) salah:

A     e# Push a 10, the initial running total.
q{    e# For each character in the input...
  ~-  e#   Evaluate the character to get the digit and subtract it from the total.
  Ac  e#   Push a linefeed character.
  e|  e#   Logical OR of the running total and the linefeed character (using
      e#   short-circuiting).
}/
N&    e# Take the set intersection with the string containing a linefeed character.
      e# If the total is still a number of any character other than the linefeed,
      e# this will yield an empty string. Otherwise, the string will remain unchanged
      e# and the linefeed will be printed.

Tugas 8 - Jam Persegi - 10 byte

qDbJ%5/)3*

Suite uji.

Ini hanya beberapa sihir modulo yang cukup acak pada kode karakter yang terjadi hash ke nilai yang benar. Saya cukup yakin bahwa sesuatu yang lebih pendek adalah mungkin, tetapi ini adalah yang terpendek yang saya temukan (secara terprogram) untuk struktur seperti ini:

q   e# Read the input.
Db  e# Treat the character codes of the string as digits in base 13. This maps the
    e# four inputs to the values: 2023940117708546863
    e#                            2023940113755405840
    e#                            2023940781838850791
    e#                            2023940113755390292
J%  e# Take the result modulo 19. This gives [2, 5, 12, 18], respectively.
5/  e# Divide by 5 (rounding down). [0, 1, 2, 3], respectively.
)   e# Increment. [1, 2, 3, 4], respectively.
3*  e# Multiply by 3. [3, 6, 9, 12], respectively.

Tugas 9 - Seni Braket - 23 22 byte

Terima kasih kepada Sp3000 untuk menghemat 1 byte.

q_{_')>+)}%W%+_W%N@N3$

Suite uji.

Cukup mudah. Pemetaan antara kurung kiri dan kanan dilakukan dengan menambahkan 2 (atau 1 untuk tanda kurung):

q_      e# Read input and duplicate.
{       e# Map this block onto each character...
  _')>  e#   Duplicate and check if it's not a parenthesis.
  +     e#   Add the result, leaving parentheses unchanged and incrementing the
        e#   other bracket types.
  )     e#   Increment again.
}%
W%+     e# Reverse and add to the original, giving the middle line.
_W%     e# Duplicate and reverse, giving the first line.
N@      e# Push a linefeed, pull up the middle line.
N3$     e# Push another linefeed, copy the first line.

Tugas 11 - Sator Square - 22 byte

"SATOR
AREPO
TEN"_W%1>

Uji di sini.

Mungkin solusi yang paling membosankan dari semuanya. Ini mendorong bagian pertama dari string dan kemudian membalikkannya:

"SATOR
AREPO
TEN"    e# Push everything up to the centre of the square.
_W%     e# Duplicate and reverse.
1>      e# Discard the "N", because we don't want that twice.

Tugas 12 - Tweet Utama - 13 12 byte

',32>_51>'d

Uji di sini. (Dengan hasil diagnostik untuk hasilnya.)

Setelah 'ada yang tidak dicetak <DEL>(0x7F), yang SE strip. Untuk menempelkan salinan, gunakan versi ini sebagai gantinya:

'~),32>_51>'d

String yang dicetak adalah

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~d

Artinya, ini berisi satu run semua karakter, diikuti oleh run lain dari Ske ~, diikuti oleh satu d. Jumlah kode karakter adalah 12203. Saya menemukan ini melalui sedikit trial and error.

'~),32>  e# Push a string with all printable characters.
_51>     e# Duplicate this and discard the first 51 of them.
'd       e# Push a "d".
Martin Ender
sumber
1
q~$~\-> q"FIHEELT"3*H<fe=:+.
jimmy23013
@ jimmy23013 Ohhhh, saya terus lupa bahwa kita memiliki e=hari-hari ini.
Martin Ender
Saya berharap mendapatkan jawaban yang cukup untuk memposting sesuatu sebelum Anda melihat bagaimana melakukan # 5 dalam 20 karakter.
Peter Taylor
19

Pyth, 9 tugas dalam 138 byte

Ini butuh waktu cukup lama.

Saya pikir 9 tugas adalah batas untuk Pyth. Termasuk program terpendek berikutnya (Sator Square) menghasilkan 160 byte. Bermain golf 20 byte sangat tidak mungkin. Ada 2 atau 3 tugas yang sedikit jelek dan mungkin bisa dipersingkat, tapi secara keseluruhan saya cukup senang dengan solusinya.

Tugas 1 - Bisakah Tiga Angka Membentuk Segitiga ?, 8 byte

>FsMc2SQ

Cobalah online: Input Reguler atau Test Suite

Tugas 2 - Terdekat Dengan Satu Juta, 14 byte

ho.a-^T6NsM.pz

Cobalah online: Input Reguler atau Test Suite

Tugas 4 - Surat FILTHE, 20 byte

s*Vtsmmdd5/Lz"TLIHFE

Cobalah online: Input Reguler atau Test Suite

Tugas 5 - Alex Recursive A., 16 byte

u+"Alex "_GhQ".A

Cobalah online: Input Reguler atau Test Suite

Tugas 6 - Rotasi Numpad, 20 byte

jeo}zhN.uC_N3_c3jkS9

Cobalah online: Input Reguler atau Test Suite

Tugas 7 - Membagi Digit Menjadi Puluhan, 15 byte

qTu+WnGTvHG-zZZ

Cobalah online: Input Reguler atau Test Suite

Tugas 8 - Jam Persegi, 12 byte

*3%%Cz1978 5

Cobalah online: Input Reguler atau Test Suite

Tugas 9 - Seni Braket, 20 byte

V3_WtN+z_Xz"[<({})>]

Cobalah online: Input Reguler atau Test Suite

Tugas 12 - Tweet Utama, 13 byte

++*d44srd\\&

Cobalah online: Input Reguler

Jakube
sumber
2
Menggabungkan hasil kiriman kami dalam 133 byte.
isaacg
9

TI-BASIC, 11 12 Tugas dalam 728 830 byte

Tugas 1 dalam 7 byte

:2max(Ans)`<`sum(Ans

Input adalah daftar di Ans.

Tugas 2 dalam 92 110 byte

:seq(expr(sub(Ans,I,1)),I,1,7→L₁
:SortA(L₁
:min(7,1+sum(not(L₁
:{L₁(1)+sum(seq(L₁(I))₁₀^(I-8),I,2,7)),L₁(Ans)+sum(seq((I`>`Ans)L₁(I)₁₀^(1-I),I,2,7
:ᴇ6Ans(1+(0`>`min(ΔList(abs(1-Ans

Anjuran untuk daftar digit Input adalah string Ans.

Tugas 3 dalam 119 byte

:Input Str1
:"  →Str2
:For(I,1,length(Str1
:sub(Str1,I,1→Str3
:inString("`<>`",Ans
:If Ans:Then
:max(0,min(L,C+2Ans-3→C
:Else
:C+1→C
:L+1→L
:sub(Str2,1,C)+Str3+sub(Str2,C+1,L-C+1→Str2
:End
:End
:sub(Str2,2,L

Meminta string. Asumsikan C dan L tidak terdefinisi atau 0.

Tugas 4 dalam 35 byte

:sum(int(2seq(inString("TLIHFE",sub(Ans,I,1))^.4,I,1,length(Ans

Input adalah string Ans.

Tugas 5 dalam 63 byte

:Ans/2→C
:sub("A.A",1+2fPart(C),2
:For(I,0,C
 :"Alex "+Ans
 :If I≠C
  :Ans+" xelA
:End
:Ans

Input adalah angka dalam Ans.

Tugas 6 dalam 66 byte

: 𝑖 ^ ((Ans <7) (Ans-3 (Ans >3: Untuk (Y, ⁻1,1: Jumlah sum (seq ((5-real (AnsX + Ans𝑖Y) -3imag (AnsX + Ans𝑖Y)) ₁₀ ^ ( X + 1), X, ⁻1,1: Akhir

Input adalah angka dalam Ans.

Tugas 7 dalam 36 43 byte

:Input <strike>L₁</strike>Str1
:.5
:For(I,1,<strike>dim(L₁</strike>length(Str1
 :Ans+<strike>L₁(I</strike>expr(sub(Str1,I,1
 :If 10=int(Ans
  :0
:End
:not(Ans

Meminta daftar string digit .

Tugas 8 dalam 29 byte

:18fPart(sum(seq(I(sub(Ans,I,1)=" ")/6,I,1,15

Input adalah string Ans.

Tugas 9 dalam 83 byte

:For(I,1,16,2
 :If I<8
  :Ans+sub("`)}]>`",inString("`({[<`",sub(Ans,4,1)),1
 :sub(Ans,I,1)+Ans
:End
:For(I,⁻1,1
 :Disp sub(Ans,9-8abs(I),8
:End

Input adalah string Ans.

Tugas 10 dalam 159 byte

:1→X
:Input Str1
:2+length(Str1→L
:"X
:While 2+L`>`length(Ans
 :Ans+Ans→Str2
:End
:Ans→Str3
:While 1
 :"XX
 :Ans+Str1+Ans→Str1
 :For(I,1,L
  :Ans+sub("0X.",2expr(sub(Str2,I+1,1))+not(expr(sub(Ans,I,3)+sub(Str2,I,3)+sub(Str3,I,3))),1
 :End
 :Disp sub(Ans,L+3,L
 :Str2→Str3
 :Str1→Str2
 :Input Str1
:End

Gunakan X0.bukan .Xomasing - masing (maaf tidak ada yang cocok). Anjuran untuk input baris demi baris. Anda harus memasukkan dua baris Xs untuk melihat semua output, dan kemudian 2nd + Quit untuk keluar.

Tugas 11 dalam 39 byte

:Disp "SATOR
:Disp "AREPO
:Disp "TENET
:Disp "OPERA
:Disp "ROTAS

Tugas 12 dalam 77 byte

: Ans + "tvm_I% LinReg (ax + b) DS <(getKeyconj (1-PropZTest (dayOfWk (Manual-Fit C / YANOVA (* baris (HorizRegEQUnarchive [J]! # $ &'', .234567890:; = >? @GBQX \^ ;; _`qw {|} ~

Atau sebagai hex:

72702ABB21FFDBADBB25BB3EEF06EF16
6331BB5917746201BB695C092DBBD2BB
D3BBD4AEAE2B3A323334353637383930
3EBBD66A6CAFBBD147425158BBD7F0BB
D9BBD5BBC1BBC708BBD809BBCF

Input adalah string yang berisi "di Ans.

Ini sebenarnya tidak mungkin dalam TI-BASIC. Dimungkinkan untuk mengedit hex program dasar dan menggunakan token 2-byte tertentu untuk mendapatkan semua karakter ascii yang dapat dicetak ke dalam kode sumber, tetapi bukan itu masalahnya. Masalahnya adalah bahwa tidak ada cara untuk menyimpan "karakter ke dalam string di dasar murni pada kalk bersih tanpa input program (hal yang sama berlaku untuk karakter, tetapi itu tidak dapat dicetak ascii). Namun, dimungkinkan untuk menempatkan "ke dalam persamaan di luar dasar, setelah itu Anda dapat menggunakan dasar untuk mengubah persamaan menjadi string dan menampilkan string itu. Di atas semua itu, hanya ada cukup ruang di layar untuk 128 karakter sekaligus.

jacobly
sumber
7

Perl, 4 tugas dalam 117 byte

Mari kita coba bahasa nyata ;)

Belum menyerah, bahkan mungkin bisa memeras 5 tugas dalam 140 byte, meskipun tidak mungkin!

* Tugas 1: 30 + 1 = 31 byte

@F=sort@F;say$F[0]+$F[1]>$F[2]

Pemakaian: perl -aM5.010 entry.pl input.txt

* Tugas 4: 32 + 1 = 33 byte

y/ELTFHI/4223/;s/./+$&/g;$_=eval

Pemakaian: perl -p entry.pl input.txt

Tugas 5: 54 byte

say"Alex "x($_/2+1).qw(A. .A)[$_%2]." xelA"x(--$_/2+1)

-2b terima kasih kepada Dom Hastings

Pemakaian: echo 4 | perl -M5.010 entry.pl

Tugas 7: 37 + 2 = 39 byte

($i+=$_)>10&&exit,$i%=10for@F;$_=!$i;

Pemakaian: perl -pF entry.pl input.txt

* Tugas 8: 21 + 2 = 23 byte

$_=y/|_ 
/14/dr/64%14

Ini sedikit rumit. Dimulai dengan mengganti masing-masing |dengan xdan masing-masing _dengan yruang kemudian menggantikan untuk menghasilkan string dua digit yang unik untuk setiap grid ( yyxxyxxyyx, yyxxyxxyyxyyxxxxyxyx, yyxxxxyxyxyyxyxxxyyx, yyxyxxxyyxyyxxxxyyx, yyxxxxyyx). Selanjutnya, saya menulis sebuah program untuk bruteforce nilai untuk xdan y, dan operasi matematika yang dapat dilakukan pada angka-angka yang dihasilkan setelah penggantian xdan yuntuk memberikan output 3,6,9,12 untuk setiap angka. Pada akhirnya x=1,, y=4dan operasi sihir itu /64%14.

Pemakaian: perl -0p entry.pl input.txt

Tugas 11: 34 byte

say"SATOR
AREPO
TENET
OPERA
ROTAS"

Pemakaian: perl -M5.010 entry.pl

* Tugas 12: 30 byte

say d.pack"C*",32..126,83..126

Pemakaian: perl -M5.010 entry.pl

Penafian: -M5.010 dianggap 'gratis'

Jarmex
sumber
Apakah Ruby kurang nyata dari Perl? ;)
Martin Ender
9
Ketika saya melihat Anda menjawab (yang terlihat seperti noise), saya tidak akan memenuhi syarat Perl sebagai bahasa nyata ;)
Fatalize
1
Kerja bagus! Saya pikir Anda dapat menyimpan 2 byte dengan qw(A. .A)[$_%2]alih - alih ("A.",".A")[$_%2]dalam tugas 5, dan saya yakin Anda bisa mendapatkan beberapa byte lagi ...
Dom Hastings
6

Ruby, 4 tugas dalam 280 byte (tidak kompetitif)

Ini hanya upaya, saya akan terus membuat tugas nanti (dan semoga golf yang sudah ada).

Tugas 1

a=gets.split.map &:to_i;p a.all?{|e|e<a.inject(:+)-e}

Tugas 2

p gets.chars.permutation.map{|a|a.join.to_i}.min_by{|x|(x-1e6).abs}

Tugas 4

n,b='EFHILT',0;gets.chars.map{|c|b+=n[c]==p ? 0:[4,3,3,3,2,2][n.index c]};p b

Tugas 5

a='Alex A.';gets.to_i.times{|i|i%2<1 ? a.sub!('A.','.A xelA'):a.sub!('.A',a)};$><<a
Peter Lenkefi
sumber
6

TI-BASIC, 12 tugas dalam 994 byte

Unduh semua sebagai file grup TI ( .8xg )

(Tag spoiler ditambahkan per permintaan.)

Tugas 1 - Bisakah Tiga Angka Membentuk Segitiga? - 7 byte

Unduh sebagai file program TI-83 + ( .8xp )

:2max(Ans)<sum(Ans

Tugas 2 - Terdekat Dengan Satu Juta - 114 byte

Unduh sebagai file program TI-83 + ( .8xp )

:int(10fPart(Ans\10^(\-cumSum(binomcdf(6,0→X
:"sum(\L\X\10^(\cumSum(not(binompdf(6,0→\Y1\
:SortD(\L\X
:\Y1\→X
:sum(not(\L\X
:If Ans
:Then
:If max(\L\X=1
:X+\E\6-\10^(\6-Ans→X
:SortA(\L\X
:augment(ΔList(cumSum(\L\X)),{0→X
:End
:{X,\Y1\
:Ans(1+(0>min(ΔList(abs(\E\6-Ans

Tugas 3 - Simulator Papan Ketik Sederhana - 131 127 byte

Unduh sebagai file program TI-83 + ( .8xp )

:Input Str1
:DelVar X1→Y
:"..→Str2
:For(Z,1,length(Str1
:sub(Str1,Z,1→Str3
:(Ans=">")-(Ans="<
:If Ans
:Then
:max(1,min(Y+Ans,X+1→Y
:Else
:sub(Str2,1,Y)+Str3+sub(Str2,Y+1,X-Y+2→Str2
:X+1→X
:Y+1→Y
:End
:End
:sub(Str2,2,X

Tugas 4 - Surat FILTHE - 34 byte

Unduh sebagai file program TI-83 + ( .8xp )

:sum(int(\³√(\12seq(inString("TLIHFE",sub(Ans,X,1)),X,1,length(Ans

Tugas 5 - Alex Recursive A. - 107 byte

Unduh sebagai file program TI-83 + ( .8xp )

:Input X
:".A..
:For(X,0,X
:Ans→Str1
:5int(.5X+.5
:sub(Str1,1,Ans+1)+sub(".A xelAlex A.",6gcd(X,2)-5,7)+sub(Str1,Ans+4,5X-Ans+1
:End
:sub(Ans,2,5X+2

Tugas 6 - Rotasi Numpad - 86 byte

Unduh sebagai file program TI-83 + ( .8xp )

:.3Ans+2(Ans=6→X
:[[9,6,3][8,5,2][7,4,1
:For(X,0,X
:rowSwap(Ans\^T\),1,3
:End
:Ans
:*row+(10,*row+(10,Ans\^T\,1,2),2,3
:For(X,1,3
:Disp Ans(3,X
:End

Tugas 7 - Membagi Digit Menjadi Puluhan - 77 byte

Unduh sebagai file program TI-83 + ( .8xp )

:Ans+"0
:seq(expr(sub(Ans,X,1)),X,1,length(Ans
:augment(Ans,{10not(not(max(Ans→X
:1→X
:Repeat Ans≥dim(\L\X
:Ans+1
:If 10=sum(\L\X,X,Ans
:Ans+1→X
:End
:X=Ans

Tugas 8 - Jam Persegi - 35 byte

Unduh sebagai file program TI-83 + ( .8xp )

:12-3max(seq(X(sub(Ans,6gcd(X,2)+X,1)≠" "),X,1,3

Tugas 9 - Seni Braket - 86 byte

Unduh sebagai file program TI-83 + ( .8xp )

:Input Str1
:For(X,1,4
:For(Y,0,1
:abs(X-9not(Y→Z
:"()[]{}<>
:sub(Ans,inString(Ans,sub(Str1,X,1))+Y,1
:Output(1,Z,Ans
:Output(2,9-Z,Ans
:Output(3,Z,Ans
:End
:End

Tugas 10 - Membatasi - 218 byte

Unduh sebagai file program TI-83 + ( .8xp )

:".
:For(A,0,\E\9
:Input Str1
:Ans+Str1→Str2
:If Str1≠".
:End
:length(Ans→X
:round(A\^-1\(Ans-2→B
:seq(expr(sub(Str2,A,1)),A,2,X-1→B
:πAns→C
:"augment(Ans,augment(Ans,\L\B))+augment(Ans,augment(\L\C,Ans))+augment(\L\B,augment(Ans,Ans→X
:seq(0,A,1,B
:\L\X→A
:For(C,0,A+1
:seq(\L\A(A+BC),A,1,B→C
:int(Ans→B
:{0
:1+not(\L\X)+not(fPart(\L\X→B
:".
:For(X,1,B+2
:Ans+sub("120",\L\B(X),1
:End
:Disp sub(Ans,2,B+2
:End

Pergantian ini telah dilakukan: 0= ., 1= X, 2=o

Untuk input (setelah program dimulai), ketikkan satu baris sekaligus, tekan enter pada setiap jeda baris, hingga baris terakhir ditulis. Lalu tekan enter, ketik satu periode, lalu tekan enter lagi untuk mengirim seluruh string.

Tugas 11 - Sator Square - 38 byte

Unduh sebagai file program TI-83 + ( .8xp )

:Disp "SATOR","AREPO","TENET","OPERA
:"ROTAS

Tugas 12 - Tweet Utama - 151 byte

Unduh sebagai file program TI-83 + ( .8xp )

:Ans+"!#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
:For(X,1,45
:Ans+" 
:End
:Ans

Ansharus berisi kutipan ganda, dilakukan dengan mengetikkan langsung ke \Y1\dari editor persamaan dan berlari Equ►String(\Y1\,Str1:Str1dari layar beranda.

Panjang output 140. 8 muncul dua kali, dan ada 45 spasi bersama dengan karakter ASCII lainnya masing-masing muncul satu kali. Ini berjumlah (33 + 34 + ... + 126) + 56 + 32 × 45 = 8969, perdana Sophie Germain.

Weregoose
sumber
Aku bertanya OP, dan Anda dapat mengandalkan token seperti sin(sebagai menampilkan s, i, n, dan (dalam Task 12
lirtosiast
0

Python 3, 1 tugas, 268 byte, tidak kompetitif

Saya mencoba Tugas # 2 dengan Python 3.5.2 Saya baru mengenal kode golf dan python

import itertools
def f2(l):
    n=1000000
    l=list(itertools.permutations(l))
    j = len(l)
    m=[None]*j
    while j>0:
        j -= 1
        m[j]= int(''.join(str(i) for i in l[j]))
        l[j]=abs(n-m[j])
    l.sort()
    k=n-l[0]
    return(n+l[0],k)[k in m]
Paddychiller
sumber
Selamat datang di PPCG. Anda akan menemukan di python 3 Anda dapat meletakkan beberapa pernyataan Anda pada satu baris misalnya Anda bisa menulis x=10;print(x)Ini akan membantu beberapa bagian Anda yang berlekuk.
george