Powtórz n-ty element

18

Od jakiegoś czasu nie mieliśmy pytania na (dokładnie 5 dni), więc przejdźmy do jednego.

Biorąc pod uwagę ciąg si dodatnią liczbę całkowitą n, weź każdy nelement s, powtórz go nrazy i włóż z powrotem s.

Na przykład, jeśli n = 3i s = "Hello, World!", co trzeci znak to Hl r!. Następnie powtarzasz każdy znak nrazy, aby wyprodukować HHHlll rrr!!!. Następnie zastępujesz oryginalne litery powtarzanymi wersjami, aby uzyskać produkt końcowyHHHellllo, Worrrld!!!

Musisz wykonać to zadanie w możliwie najkrótszym kodzie w swoim języku!

Zasady

  • Jest to więc wygrywa najkrótszy kod w bajtach
  • ngwarantuje się, że będzie mniejsza niż długość si większa niż 0
  • Pierwszy znak sjest tam gdzie nth znaki są zaczerpnięte z, i zawsze jest powtarzane nrazy
  • sbędzie się składać wyłącznie z drukowalnego ASCII (punkty kodowe 0x20 (space)do 0x7E (~))

Przypadki testowe

s, n => output

"Hello, World!", 3 => "HHHellllo,   Worrrld!!!"
"Code golf", 1 => "Code golf"
"abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm"
"tesTing", 6 => "ttttttesTingggggg"
"very very very long string for you to really make sure that your program works", 4 => "vvvvery    veryyyy verrrry loooong sssstrinnnng foooor yoooou toooo reaaaally    makeeee surrrre thhhhat yyyyour    proggggram    workkkks"
Cairney Coheringaahing
źródło
Czy możemy wziąć dane wejściowe sjako tablicę znaków?
Kevin Cruijssen
2
i umieść go z powrotem ws ” <- czy jest to ścisły wymóg (nadpisanie oryginalnego ciągu), czy też jest w porządku po prostu podać wynik końcowy?
Felix Palmen
@KevinCruijssen Yes you can
caird coinheringaahing
1
@ FelixPalmen, tak po prostu to wyjaśniłem. Możesz użyć dowolnej metody
Cairair coinheringaahing 12.10.17
@cairdcoinheringaahing dobrze, dziękuję, już to zrobiłem.
Felix Palmen

Odpowiedzi:

10

Galaretka , 3 bajty

Ḣs×

Dane wejściowe przyjmuje się jako s, n .

Wypróbuj online!

Jak to działa

Ḣs×  Main link. Argument: s, n

Ḣ    Head; yield s.
     This pops the list, leaving [n] as the main link's argument.
 s   Split s into chunks of length n.
  ×  Multiply each chunk by [n], repeating its first element n times.
Dennis
źródło
Czy to nie jest tak naprawdę 6 bajtów w kodowaniu UTF-8? E1 B8 A2 73 C3 97
CoDEmanX
5
W UTF-8 tak. Jednak Jelly używa niestandardowej strony kodowej , w której każdy znak, który rozumie, zajmuje tylko jeden bajt.
Dennis,
7

Galaretka ,  6  5 bajtów

-1 bajt dzięki dziurawej zakonnicy (użyj mnożenia ciągów Pythona).

×Jm¥¦

Pełny program, akceptujący dwa argumenty wiersza poleceń, ciąg i liczbę oraz wypisujący wynik.

Wypróbuj online!

W jaki sposób?

×Jm¥¦ - Main link: list of characters, s; number, n   e.g. ['g','o','l','f','e','r'], 2
    ¦ - sparse application:
   ¥  - ...to indices: last two links as a dyad:
 J    -      range of length of s                          [1,2,3,4,5,6]
  m   -      modulo slicing by n (every nth entry)         [1,3,5]
×    - ...action: multiply  ["gg",'o',"ll",'f',"ee",'r']
      - implicit print                                 >>> ggollfeer
Jonathan Allan
źródło
5 bajtów ?
Leaky Nun
Tak, próbowałem xzapomnieć ×; dzięki.
Jonathan Allan
Czy to nie jest tak naprawdę 8 bajtów w kodowaniu UTF-8? C3 97 4A 6D C2 A5 C2 A6
CoDEmanX
2
@CoDEmanX Używa niestandardowej strony kodowej
MD XF
@MDXF dzięki za wystawienie pola!
Jonathan Allan,
4

JavaScript (ES6), 46 bajtów

Pobiera dane wejściowe w składni curry (s)(n).

s=>n=>s.replace(/./g,(c,i)=>c.repeat(i%n?1:n))

Przypadki testowe

Arnauld
źródło
3

C # (.NET Core) , 84 82 bajtów

n=>m=>{var s="";for(int i=0;i<n.Length;)s+=new string(n[i],i++%m<1?m:1);return s;}

Wypróbuj online!

Ian H.
źródło
Możesz zapisać bajt, usuwając go i++i zmieniając n[i],i%m<1?m:1na n[i],i++%m<1?m:1.
Kevin Cruijssen
Możesz zapisać kolejny bajt, n=>m=>...
curry
3

05AB1E , 8 7 bajtów

-1 bajt dzięki @Emigna

ôʒć²×ì?

Wypróbuj online!

Wyjaśnienie

ôʒć²×ì?    Arguments s, n  ("Hello, World!", 3)
ô          Split s into pieces of n  (["Hel", "lo,", ...])
 ʒ         Filter (used as foreach)
  ć          Extract head  ("Hel" -> "el", "H" ...)
   ²×ì       Repeat n times and prepend  ("el", "H" -> "HHHel" ...)
      ?      Print without newline
kalsowerus
źródło
Zaoszczędź bajt zôʒć²×ì?
Emigna
@Emigna dzięki, wiedziałem, że musi istnieć sposób na pozbycie się zamknięcia}
kalsowerus
Dziwne użycie filtra, gdy nie wykorzystuje wyniku, ale w rzeczywistości robi różnicę ...
Magic Octopus Urn
@MagicOctopusUrn, tak filtr jest nadal lepszym narzędziem do nauki w 05AB1E
kalsowerus
@kalsowerus vyjest jednym foreach, εjest drugim. Co dziwne, εnie działa.
Magic Octopus Urn
2

PowerShell , 51 bajtów

param($a,$n)-join($a|%{($_,("$_"*$n))[!($i++%$n)]})

Wypróbuj online!

Pobiera dane wejściowe jako chartablicę $ai liczbę $n. Pętle przechodzą $ai każda iteracja wysyła bieżącą literę $_lub bieżącą literę pomnożoną przez $n, na podstawie indeksu, do pseudo-trójki. Indeks wybiera między dwoma w oparciu o inkrementację, $ia następnie modulo $n. Litery te są następnie -joinskładane z powrotem, a ciąg zostaje pozostawiony w rurociągu; wynik jest niejawny.

AdmBorkBork
źródło
2

Python 2 , 54 53 bajtów

Edycja: Zapisano 1 bajt dzięki @Rod

f=lambda x,n,i=0:x[i:]and[1,n][i%n<1]*x[i]+f(x,n,i+1)

Wypróbuj online!

Halvard Hummel
źródło
1
możesz zamienić x[i]i [1,n][i%n<1]zaoszczędzić miejsce
Rod
2

Alice , 25 bajtów

/
KI /!Iw?&.?t&O?&wWOI.h%

Wypróbuj online!

Wyjaśnienie

/         Switch to Ordinal.
I         Read first line of input (i.e. n).
/         Switch to Cardinal.
!         Convert input to its integer value and store it on the tape.
I         Read first character from input string.
w         Push current IP address onto the return address stack. This
          effectively marks the beginning of the main loop.

  ?         Retrieve n.
  &.        Duplicate current character n times (once more than we need,
            but who cares about a clean stack...).
  ?t        Retrieve n and decrement.
  &O        Output n-1 copies of the current character.
  ?         Retrieve n.
  &w        Push the current IP address onto the return address stack n
            times. This marks the beginning of a loop that is executed n 
            times.

    W         Discard one copy of the return address from the stack,
              effectively decrementing the loop counter.
    O         Output the last character. On the first iteration, this is
              the final copy of the repeated character, otherwise it's just
              the single character we read on the last iteration.
    I         Read a character for the next iteration.
    .h%       Compute c % (c+1) on that character, which is a no-op for
              for valid characters, but terminates the program at EOF when
              c becomes -1.

K         Jump to the address on top of the return address stack. As long
          as there are still copies of the address from the inner loop, we
          perform another iteration of that, otherwise we jump back to the
          beginning of the outer loop.
Martin Ender
źródło
2

R , 82 76 75 bajtów

function(s,n)cat(rep(S<-el(strsplit(s,'')),c(n,rep(1,n-1))+!seq(S)),sep='')

Wypróbuj online!

Funkcja; pobiera ciąg si liczbę całkowitą ni wypisuje powtarzaną wersję na standardowe wyjście.

Wyjaśnienie:

function(s,n){
 S <- el(strsplit(s,""))                  # characters
 r     <- c(n,rep(1,n-1))                 # [n, 1, 1,...,1], length n
 repeats <- r+!seq(S)                     # extends R to length of S
 cat(rep(S, repeats), sep="")             # print out
}

R , 55 bajtów

function(S,n)cat(rep(S,c(n,rep(1,n-1))+!seq(S)),sep="")

Wypróbuj online!

Ten sam algorytm jak powyżej, ale z Slistą pojedynczych znaków.

Giuseppe
źródło
1

Python 2 , 57 bajtów

lambda s,n:''.join(c*[1,n][i%n<1]for i,c in enumerate(s))

Wypróbuj online!

Pręt
źródło
Czy indeksowanie w ciągu zamiast używania enumeratebyłoby krótsze?
caird coinheringaahing 11.10.17
@cairdcoinheringaahing, którego musiałbym użyć range(len())w końcu, byłby dłuższy
Rod
1

Japt , 8 bajtów

ËùDV*EvV

Przetestuj online!

Wyjaśnienie

 Ë    ùDV*EvV
UmDE{DùDV*EvV}   Ungolfed
                 Implicit: U = s, V = n
UmDE{        }   Replace each char D and (0-)index E in U by this function:
          EvV      Take 1 if the index is divisible by V; 0 otherwise.
        V*         Multiply this by V. This gives V for every Vth index; 0 for others.
     DùD           Pad D with itself to this length. This gives V copies of D for every
                   Vth index; 1 copy of D for others.
                 Implicit: output last expression

Mam do zaliczenia na pomysł, aby wykorzystać ùdo @Shaggy odpowiedź jest tutaj . Nie wiem, czy sam bym o tym pomyślał ...

ETHprodukcje
źródło
Teraz widzisz, dlaczego tak chętnie dodawano wyściółkę sznurka :) Ładne rozwiązanie. Próbowałem znaleźć coś do pracy ë, dla kup i chichotów, ale niestety nie udało mi się!
Kudłaty,
1

J, 17 bajtów

(#@]$[,1#~<:@[)#]
  • (...) # ]wszystko w parens tworzy ciąg znaków dla wbudowanego czasownika „copy”. Na przykład, jeśli lewy argument ma wartość 3, tworzy ciąg 3 1 1powtórzony w razie potrzeby, aby zrównać liczbę znaków w prawym arg ], który zawiera ciąg. Oznacza to, że #rozwiązuje problem bezpośrednio, zakładając, że możemy podać poprawny lewy argument: 4należy 4 1 1 1powtórzyć i tak dalej.
  • Badając #@]$[,1#~<:@[, widzimy, że używa czasownika kształtowego J $na środku - to główny czasownik tego wyrażenia ...
  • Po lewej stronie $jest #@], co oznacza długość #prawego arg ].
  • Po prawej stronie $znajduje [,1#~<:@[się pociąg z 5 czasownikami. Pierwszy wykonany pociąg to ...
  • 1#~<:@[, co oznacza 1 skopiowaną #~(pasywną formę kopii) jedną mniej niż <:lewy argument [. Ten wynik jest przekazywany do ostatecznego widelca:
  • [, ...co oznacza, że ​​weźmy lewy argument i dołączmy właśnie obliczony wynik, który jest ciągiem 1s.

Wypróbuj online!

Jonasz
źródło
]#~[^0=(|i.@#)przez 14 bajtów
mile
To całkiem sprytne. Twoje ulepszenia moich postów są dla mnie najlepszą częścią tej witryny.
Jonasz
1

Perl 5, 37 , 29 +1 (-p) bajtów

-8 bajtów dzięki komentarzowi Toma.

$n=<>;s/./"@-"%$n?$&:$&x$n/ge

Wypróbuj online

Nahuel Fouilleul
źródło
Nie mogę myśleć o lepszym podejściem teraz, ale wpadłem na kilka pomysłów: $n=<>;zamiast BEGINbloku i mieć nw następnym wierszu wejścia i wymienić $-[0]z "@-"ponieważ tylko pierwsza liczba jest oceniana w porównaniu. Ponadto, jeśli weźmiesz wkład za npośrednictwem -i, możesz po prostu użyć $^Izamiast deklarować i używać $n, ale ponieważ jest to niestandardowe, może nie latać ... :)
Dom Hastings,
1

Procedura kodu maszynowego 6502 , 50 bajtów

A0 01 84 97 88 84 9E 84 9F B1 FB F0 20 A4 9F 91 FD C6 97 D0 10 A6 FF CA F0
05 C8 91 FD D0 F8 84 9F A5 FF 85 97 E6 9E A4 9E E6 9F D0 DC A4 9F 91 FD 60

Jest to podprogram niezależny od pozycji oczekujący wskaźnika do ciągu wejściowego (zakończonego 0, znanego również jako ciąg C) w $fb/ $fc, wskaźnika do bufora wyjściowego w $fd/ $fei count ( n) w $ff. Wykorzystuje proste indeksowanie, więc jest ograniczone do maksymalnej długości 255 znaków (+ 0 bajtów) ze względu na architekturę 8-bitową.

Objaśnienie (skomentowany demontaż):

 .rep:
A0 01       LDY #$01            ; init counter to next repetition sequence
84 97       STY $97
88          DEY                 ; init read and write index
84 9E       STY $9E             ; (read)
84 9F       STY $9F             ; (write)
 .rep_loop:
B1 FB       LDA ($FB),Y         ; read next character
F0 20       BEQ .rep_done       ; 0 -> finished
A4 9F       LDY $9F             ; load write index
91 FD       STA ($FD),Y         ; write next character
C6 97       DEC $97             ; decrement counter to nex rep. seq.
D0 10       BNE .rep_next       ; not reached yet -> next iteration
A6 FF       LDX $FF             ; load repetition counter
 .rep_seqloop:
CA          DEX                 ; and decrement
F0 05       BEQ .rep_seqdone    ; if 0, no more repetitions
C8          INY                 ; increment write index
91 FD       STA ($FD),Y         ; write character
D0 F8       BNE .rep_seqloop    ; and repeat for this sequence
 .rep_seqdone:
84 9F       STY $9F             ; store back write index
A5 FF       LDA $FF             ; re-init counter to next ...
85 97       STA $97             ; ... repetition sequence
 .rep_next:
E6 9E       INC $9E             ; increment read index
A4 9E       LDY $9E             ; load read index
E6 9F       INC $9F             ; increment write index
D0 DC       BNE .rep_loop       ; jump back (main loop)
 .rep_done:
A4 9F       LDY $9F             ; load write index
91 FD       STA ($FD),Y         ; and write terminating0-byte there
60          RTS                 ; done.

Przykład używającego go kodu maszynowego C64 :

Jest to program w asemblerze w stylu ca65 dla C64 przy użyciu tej procedury (importowanej jako rep):

REP_IN          = $fb
REP_IN_L        = $fb
REP_IN_H        = $fc

REP_OUT         = $fd
REP_OUT_L       = $fd
REP_OUT_H       = $fe

REP_N           = $ff

.import         rep


.segment "LDADDR"
                .word   $c000

.code
                jsr     $aefd           ; consume comma
                jsr     $ad9e           ; evaluate expression
                sta     REP_IN_L        ; store string length
                jsr     $b6a3           ; free string
                ldy     #$00            ; loop over string
readloop:       cpy     REP_IN_L        ; end of string?
                beq     termstr         ; then jump to 0-terminate string
                lda     ($22),y         ; read next character
                sta     in,y            ; store in input buffer
                iny                     ; next
                bne     readloop
termstr:        lda     #$00            ; load 0 byte
                sta     in,y            ; store in input buffer

                jsr     $b79b           ; read 8bit unsigned int
                stx     REP_N           ; store in `n`
                lda     #<in            ; (
                sta     REP_IN_L        ;   store pointer to
                lda     #>in            ;   to input string
                sta     REP_IN_H        ; )
                lda     #<out           ; (
                sta     REP_OUT_L       ;   store pointer to
                lda     #>out           ;   output buffer
                sta     REP_OUT_H       ; )
                jsr     rep             ; call function

                ldy     #$00            ; output result
outloop:        lda     out,y
                beq     done
                jsr     $ffd2
                iny
                bne     outloop
done:           rts


.bss
in:             .res    $100
out:            .res    $100

Demo online

Zastosowanie: sys49152,"[s]",[n] npsys49152,"Hello, World!",3

Ważne: Jeśli program został załadowany z dysku (jak w wersji demonstracyjnej online), newnajpierw wydaj polecenie! Jest to konieczne, ponieważ ładowanie programu maszynowego niszczy niektóre wskaźniki C64 BASIC.

Felix Palmen
źródło
1

Java 8, 100 76 bajtów

s->n->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}

-24 bajty dzięki @ OliverGrégoire .

Wyjaśnienie:

Wypróbuj tutaj.

s->n->{                    // Method with char-array and int parameters and no return-type
  int i,k=0;               //  Index-integers
  for(char c:s)            //  Loop (1) over the characters of the input array
    for(i=k++%n<1?         //   If `k` is divisible by the input `n`:
         n                 //    Change `i` to `n`
        :                  //   Else:
         1;                //    Change `i` to 1
        i-->0;)            //   Inner loop (2) from `i` down to 0
      System.out.print(c); //    And print the current character that many times
                           //   End of inner loop (2) (implicit / single-line body)
                           //  End of loop (1) (implicit / single-line body)
}                          // End of method
Kevin Cruijssen
źródło
Ups, nie widziałem, że przesłano już zgłoszenie, więc usunąłem moje. Oto skrócone do 76 bajtów: n->s->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}( char[]zamiast, zamiast String.)
Olivier Grégoire,
Reguła kciuka, jeśli musisz zadeklarować dokładnie jeden Ciąg, który zostanie zwrócony, krótsze jest po prostu wydrukowanie go.
Olivier Grégoire,
@ OlivierGrégoire Ups .. Tak, znam tę ogólną zasadę, tym razem zapomniałem ją zastosować .. I dzięki za zapisane bajty!
Kevin Cruijssen
1

MATL , 10 7 bajtów

-3 bajty dzięki Luisowi Mendo!

tq:ghY"

Wypróbuj online!

Pobiera dane wejściowe jako, na następnie Sjako tablicę łańcuchów / znaków.

    % (implicit input)
    % stack: n
t   % duplicate
    % stack: n n
q   % decrement
    % stack: n n-1
:   % range
    % stack: n [1 2 ... n-1]
g   % convert to logical (nonzero->1, zero->0)
    % stack: n [1 1 ... 1]
h   % horizontal concatenate
    % stack: [n 1 1 ... 1]
Y"  % run-length decoding, taking the string as first input and recycling 
    % the lengths [n 1 1 ... 1] as needed
    % (implicit output as string)

Giuseppe
źródło
1

Haskell , 51 46 bajtów

Dzięki @Laikoni za uratowanie mnie 5 bajtów!

n&s=do(m,c)<-zip[0..]s;c<$[0..(n-1)*0^mod m n]

Wypróbuj online!

Wyjaśnienie / Niegolfowany

Operator c <$ [a..b]zamienia każdy element listy [a,a+1...b]przez c- tak to tylko golfed replicate:

do(m,c)<-zip[0..]s;                                  -- with all (m,c) in the enumerated ([(0,a),(1,b)..]) input string, replace with
                   replicate (1 + (n-1)*0^mod m n) c -- either n or 1 times the character c (note that the list begins with 0, that's where the 1+ comes from)
ბიმო
źródło
0

V , 13 bajtów

"aDJòylÀpÀll

Wypróbuj online!

To naprawdę głupie obejście. òlhÀälÀlÀ<M-->lpowinny działać, ale nie mogę dla życia mnie zrozumieć dlaczego, zwłaszcza ręcznie robi lhÀälÀlÀ<M-->lpowtarzane kilka razy wykonuje pracę.

Hexdump:

00000000: 1822 6144 4af2 796c c070 c06c 6c         ."aDJ.yl.p.ll

Wyjaśnienie:

<C-x>               " Decrement the number
       D            " Delete that number...
     "a             "   Into register 'a'
        J           " Remove the blank line
         ò          " Recursively...
          yl        "   Yank the letter under the cursor
            Àp      "   And paste it 'a' times
              Àl    "   Move 'a' times to the right ('l' for right)
                l   "   Move to the right one more time
                    " (implicit) end the loop
DJMcMayhem
źródło
'l' for right... Zgaduję, że to jest Vim? W przeciwnym razie ... dlaczego ?
AdmBorkBork,
2
@AdmBorkBork tak ljest w vimie. może być ortograficznie odwrócony, ale jest poprawny geometrycznie: ljest klawiszem prawej litery w środkowym rzędzie.
Jonasz
@DJMcMayhem Right. Zrobiłem to dobrze.
Jonasz
0

Python 3 , 58 bajtów

Praca nad golfem.

Wiem, że istnieją już inne odpowiedzi w języku Python, ale pomyślałem, że też opublikuję tę, ponieważ wyniki są całkiem dobre w porównaniu do innych, mimo że są w pełni funkcjami, a nie lambda.

Pobiera dane wejściowe jako parametry funkcji i drukuje na STDOUT.

def f(s,n,i=0):
 for c in s:print(end=[c,c*n][i%n<1]);i+=1

Wypróbuj online!

Dla jednego bajtu mniej (57) kodowałem lambda, jednak podobne odpowiedzi zostały już opublikowane przez innych użytkowników:

lambda s,n:''.join([c,c*n][i%n<1]for i,c in enumerate(s))
FlipTack
źródło
0

Brain-Flak (BrainHack) , 122 + 3 ( -A) = 125 bajtów

Jestem pewien, że to za długo, ale spędziłem sporo czasu, szukając i nie mogłem znaleźć żadnych ulepszeń.

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

Wypróbuj online!

H.PWiz
źródło
0

05AB1E , 12 11 bajtów

vX‚RNIÖèy×?

Wypróbuj online!

Wyjaśnienie

v             # for each letter in the input string
       è      # index into
 X‚           # the list [input_int,1]
   R          # reversed
    NIÖ       # with letter_index % input_int == 0
        y×    # repeat the current letter this many times
          ?   # print
Emigna
źródło
0

Mathematica, 71 bajtów

""<>s[[i]]~t~If[i~Mod~#2==1,#2,1]~(t=Table)~{i,Tr[1^(s=Characters@#)]}&

Wypróbuj online!

zapisano -2 bajty, słuchając user202729

J42161217
źródło
Myślę, że Mapw ciągu Charactersmoże być krótszy.
user202729,
@ user202729 ok! -2 bajty
J42161217,
0

K (oK) , 23 19 bajtów

Rozwiązanie:

{,/(1|y*~y!!#x)#'x}

Wypróbuj online!

Przykłady:

> {,/(1|y*~y!!#x)#'x}["Hello, World!";3]
"HHHellllo,   Worrrld!!!"
> {,/(1|y*~y!!#x)#'x}["Code golf";1]
"Code golf"
> {,/(1|y*~y!!#x)#'x}["abcdefghijklm";10]
"aaaaaaaaaabcdefghijkkkkkkkkkklm"

Wyjaśnienie:

{,/(1|y*~y!!#x)#'x} / the solution
{                 } / lambda function with x and y as implicit parameters
   (          )     / do everything in brackets together
            #x      / count x, #"Hello, World!" -> 13
           !        / til, !13 -> 0 1 2 3 4 5 6 7 8 9 10 11 12
         y!         / y modulo, 3!0 1 2 3 4 5 6 7 8 9 10 11 12 -> 0 1 2 0 1 2 0 1 2 0 1 2 0
        ~           / not, ~0 1 2 0 1 2 0 1 2 0 1 2 0 -> 1 0 0 1 0 0 1 0 0 1 0 0 1
      y*            / multiply by y, 3*1 0 0 1 0 0 1 0 0 1 0 0 1 -> 3 0 0 3 0 0 3 0 0 3 0 0 3
    1|              / min of 1 and, 1|3 0 0 3 0 0 3 0 0 3 0 0 3 -> 3 1 1 3 1 1 3 1 1 3 1 1 3
                #'x / take each parallel, 1 2 3#'"abc" -> "a", "bb", "ccc"
 ,/                 / flatten the list, "a", "bb", "ccc" -> "abbccc"

Uwagi:

  • -4 bajty z innym podejściem
streetster
źródło
0

Excel VBA, 71 bajtów

Anonimowa funkcja bezpośredniego okna VBE, która przenosi dane wejściowe z zakresu [A1:B1]i wyjścia do bezpośredniego okna VBE.

For i=1To[Len(A1)]:[C1]=i:?[Rept(Mid(A1,C1,1),B1^(Mod(C1,B1)=1))];:Next
Taylor Scott
źródło