Isi Bagian yang Kosong, Tolong!


11

(Tidak, bukan ini atau semua ini )

Diberikan string dan daftar string, isi semua kosong di string input dengan string yang sesuai.

Input output

String input hanya berisi karakter alfabet, spasi, dan garis bawah. Ini kosong dan tidak dimulai dengan garis bawah. Dengan kata lain, string input cocok dengan regex^[a-z A-Z]([a-z A-Z_]*[a-z A-Z])?$

Setiap string dalam daftar input adalah kosong dan hanya berisi karakter dan spasi alfanumerik. Dengan kata lain, mereka cocok dengan regex ^[a-z A-Z]+$.

Kosong adalah urutan garis bawah ( _) yang berdekatan yang tidak didahului atau diproses oleh garis bawah.

String input berisi nkosong untuk beberapa bilangan bulat positif n, dan daftar string berisi nstring yang tepat .

Output diperoleh dengan mengganti masing-masing kblank-in dalam string input dengan kstring -th dalam daftar input string.

Contoh

Diberikan string input "I like _____ because _______ _____ing"dan daftar string ["ice cream", "it is", "satisfy"], kita dapat menemukan output sebagai berikut:

  • Blank pertama langsung muncul setelahnya "like ". Kami mengisinya dengan "ice cream"untuk mendapatkan "I like ice cream because ______ _____ing".
  • Blank kedua langsung muncul setelahnya "because ". Kami mengisinya dengan "it is"untuk mendapatkan "I like ice cream because it is _____ing".
  • Kosong ketiga datang langsung setelahnya "is ". Kami mengisinya dengan "satisfy"untuk mendapatkan "I like ice cream because it is satisfying".

Kami mengeluarkan string terakhir "I like ice cream because it is satisfying".

Uji Kasus

input string, input list => output
"Things _____ for those who ____ of how things work out _ Wooden",["work out best","make the best","John"] => "Things work out best for those who make the best of how things work out John Wooden"
"I like _____ because _______ _____ing",["ice cream","it is","satisfy"] => "I like ice cream because it is satisfying"
"If you are ___ willing to risk _____ you will ha_o settle for the ordi_____Jim ______n",["not","the usual","ve t","nary ","Roh"] => "If you are not willing to risk the usual you will have to settle for the ordinary Jim Rohn"
"S____ is walking from ____ to ____ with n_oss of ___ W_____ Churchill",["uccess","failure","failure","o l","enthusiasm","inston"] => "Success is walking from failure to failure with no loss of enthusiasm Winston Churchill"
"If_everyone_is_thinking ____ ____ somebody_isnt_thinking G____e P____n",[" "," "," ","alike","then"," "," ","eorg","atto"] => "If everyone is thinking alike then somebody isnt thinking George Patton"
"Pe_________e __say ____motivation does__ last Well___her doe_ bathing____thats why we rec____nd it daily _ __________lar",["opl","often ","that ","nt"," neit","s","  ","omme","Zig","Zig"] => "People often say that motivation doesnt last Well neither does bathing  thats why we recommend it daily Zig Ziglar"

5
Banyak penjelasan untuk tugas sepele.

Jawaban:


5

Cembung , 5 byte

'_%.\

Cobalah online!

Convex adalah bahasa berbasis CJam, dan jawaban ini hampir sama dengan jawaban CJam saya, kecuali l~yang tidak dibutuhkan di sini, karena Convex melakukan evaluasi argumen otomatis pada awal program.

Penjelasan:

'_%.\ e# Full program only
'_    e# Push '_'
  %   e# Split and remove empty chunks
   .\ e# Vectorize by Swap

4

Japt , 8 byte

r"_+"@Vv

Uji secara online!

Saya merasa saya melewatkan beberapa tangkapan tersembunyi dalam aturan karena ini sangat sederhana: "ganti setiap garis bawah pada string dengan item berikutnya dalam array."


3

JavaScript, 35 byte

a=>b=>a.replace(/_+/g,a=>b.shift())

Cobalah online


1
Hal yang sama yang saya miliki. Atau,a=>b=>String.raw({raw:a.split(/_+/)},...b)
ETHproduksi


2

MATL , 9 byte

'_+'i1&YX

Cobalah online!

Penjelasan

'_+'   % Push this string: regexp pattern
i      % Input cell array of replacement strings
1      % Push 1
&YX    % Four-input regexp replacement. This implicitly inputs the original
       % string, and consecutively replaces each first occurrence of the 
       % regexp pattern in that string by one of the replacement strings.
       % Implicitly display

2

CJam , 7 byte

l~'_%.\

Cobalah online!

-1 berkat trik pintar oleh Martin Ender .

Penjelasan:

l~'_%.\ e# Full program only
l       e# Input line
 ~      e# Eval
  '_    e# Push '_'
    %   e# Split and remove empty chunks
     .\ e# Vectorize by Swap

.\bukannya \]z.
Martin Ender

@ MartinEnder Itu berfungsi o_o
Erik the Outgolfer

Tentu, \adalah operator biner. :)
Martin Ender

@ MartinEnder Sepertinya saya sudah terlalu banyak dalam bagaimana pemetaan bekerja di CJam kalau begitu.
Erik the Outgolfer

@ MartinEnder OK pada pemikiran kedua bagaimana saya tidak memikirkan itu? Tidak seperti saya tidak tahu bagaimana perilaku pemetaan misalnya [1 2 3]:_-> [1 1 2 2 3 3]juga untuk ....
Erik the Outgolfer

2

Jelly , 8 7 byte

ṣ”_¬Ðfż

Cobalah online! Sunting: Disimpan 1 byte berkat @Erik the Outgolfer. Penjelasan:

ṣ”_         Split on underscores
   ¬Ðf      Discard empty values
      ż     Zip with second input
            Implicit concatenated output


1

Pyth , 10 byte

s.i:E"_+"3

Coba di sini!

Bagaimana itu bekerja?

si: E "_ +" 3 Program lengkap.

   : E 3 Membagi input kedua pada kecocokan ...
     "_ +" Regex "_ +" (cocok dengan 1 atau lebih garis bawah)
 .i Interleave elemen daftar split dengan input.
s Gabung ke sebuah string.

1

RProgN 2 , 11 byte

x='_+'³[x‘r

Mengambil string dan setumpuk string di bagian atas tumpukan.

Elemen pertama (atas) dari stack adalah ke kanan, maka input kanan ke kiri.

Dijelaskan

x='_+'³[x‘r
x=          # Set the stack of replacements to x
  '_+'³   r # Replace each chunk of _'s with the function...
       [    # Pop off the group of _'s
        x‘  # Pop the top element off x. Use that.

Cobalah online!


1

Java 8, 57 byte

a->s->{for(String i:a)s=s.replaceFirst("_+",i);return s;}

Ketika saya membaca tantangan saya pada awalnya berpikir kita harus membuat kalimat yang benar secara tata bahasa dengan kata-kata yang berada dalam urutan acak, tetapi hanya mengganti baris dengan setiap kata berurutan lebih mudah. ;)

Penjelasan:

Coba di sini.

a->s->{            // Method with String-array and String parameter and String return-type
  for(String i:a)  //  Loop over the input-array
    s=s.replaceFirst("_+",i);
                   //   Replace the first line (1 or more adjacent "_") with the substring
                   //  End of loop (implicit / single-line body)
  return s;        //  Return the result
}                  // End of method



0

Ruby , 28 + 1 = 29 byte

$_=gsub(/_+/){|i|gets[/.*/]}

Penggunaan -p

Baris pertama adalah format string, sisanya adalah array.

Cobalah online!


0

Python 2 , 61 byte

import re
s,l=input()
for i in l:s=re.sub('_+',i,s,1)
print s

Cobalah online!

Sial.

Python 2 , 63 byte

import re
f=lambda s,l:l and f(re.sub('_+',l[0],s,1),l[1:])or s

Cobalah online!


60 byte dengan melewatkan re.subfungsi
Stephen

@Stephen Eh ... Itu terlalu dekat dengan solusi Anda. Saya hanya akan berpegang pada ini dan menemukan lebih banyak solusi yang tidak jelas. : P
totallyhuman

53 byte dengan menggunakan fungsi untuk meningkatkan proposal @ Stephen.
Jonathan Frech

@ JonathanFrech ya, tapi itulah jawaban saya : P
Stephen

@Stephen Oh; tidak melihat jawaban Anda ...: d
Jonathan Frech


0

SOGL V0.12 , 7 byte

lΔ╔*№≤ŗ

Coba Di Sini!

Penjelasan:

l        get the strings length
 Δ       range
  ╔*     multiply an underscore with each of the numbers
    №    reverse vertically (so the longest underscores get replaced first)
     ≤   put the array on top - order parameters for ŗ correctly
      ŗ  replace in the original string each any occurence of the underscores with its corresponding item in the array

0

Python 2 , 49 byte

s,l=input();import re;print re.sub("_+","%s",s)%l

Cobalah online!

Input daftar diambil sebagai tuple. Mengizinkan daftar aktual sebagai input akan menambah tujuh byte lainnya, karena konversi diperlukan ( tuple(...)).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.