Wielu z was mogło w pewnym momencie wchodzić w interakcje z ludźmi z Rosji w Internecie, a pewna ich część zauważyła nieco dziwną metodę wyrażania siebie.
na przykład удали игру нуб)))
tam, gdzie )))
zostały dodane w celu podkreślenia poprzedniego oświadczenia, pracowałem nad teorią, że stosunek )
„s” do reszty ciągu jest wprost proporcjonalny do wielkości domniemanego nacisku, jednak często trudno mi obliczyć stosunek w locie, ponieważ próbuję również poradzić sobie z mnóstwem nadużyć, dlatego chciałbym, aby możliwie najkrótszy kod pomógł mi obliczyć, jaki powinien być wynikowy łańcuch, dla wartości entuzjazmu od 0 do 500%, biorąc pod uwagę oryginał , nie entuzjastyczny ciąg znaków, to bardzo pomoże moim badaniom, ponieważ nie będę musiał pisać nieporęcznych skryptów za każdym razem, gdy chcę przetestować moją hipotezę.
Wyzwanie:
napisz pełny program lub funkcję, która, pod warunkiem dwóch argumentów, ciągu o nieznanej długości i liczby, w formacie liczb całkowitych (od 0 do 500) lub w formacie dziesiętnym (od 0 do 5, z 2 punktami dokładności) będzie
- powrót / wyświetlić oryginalny łańcuch, przyrostek liczby
)
„s - liczba zostanie obliczona jako stosunek liczby wejściowej do długości łańcucha.
- więc jeśli podano liczbę 200 lub 2,00, 200% ciągu musi być przyrostek jako
)
„s” - liczba nawiasów zaokrąglonych do miejsc dziesiętnych nie ma znaczenia.
- Skrypt jest wymagany do obsługi znaków ASCII do wydruku.
- musi obsługiwać tylko jeden wybrany format liczb wejściowych.
Przykłady:
"codegolf" 125 = codegolf))))))))))
"codegolf" 75 = codegolf))))))
"noob team omg" 0.5 = noob team omg))))))
"hi!" 4.99 = hi!)))))))))))))))
Przykładowy kod (PowerShell) (z wprowadzeniem dziesiętnym):
Function Get-RussianString ([string]$InputStr,[decimal]$Ratio){
$StrLen = $InputStr.Length
$SuffixCount = $StrLen * $Ratio
$Suffix = [string]::New(")",$SuffixCount)
return $InputStr + $Suffix
}
Get-RussianString "codegolf" 0.5
codegolf))))
To jest golf golfowy, więc wygrywa najkrótszy kod!
)
nacisku jak!
? Czy to jakiś problem z kodowaniem?!
s, ale piszą je tak, jak są, nie jest to zbyt powszechne, ale jest dość kultowe.)
to zmniejszona liczba emotikonów:)
. O ile mi wiadomo, używa się go bardzo często wśród młodych ludzi.)
to nie nacisk, to po prostu buźka. O ile mi wiadomo, trudniej jest pisać w:
rosyjskim układzie klawiatury, dlatego uśmiechają się bez oczu.:
na rosyjskim układzie (ЙЦУКЕН), jak^
na QWERTY. Ale rzeczywiście)
jest to zmniejszona wersja:)
. O wiele łatwiej jest nacisnąć i przytrzymać Shift-0 niż wielokrotnie zmieniać klawisze.Odpowiedzi:
Galaretka , 7 bajtów
Wypróbuj online!
Używa formatu dziesiętnego.
W jaki sposób?
źródło
Perl 6, 21 bajtów
źródło
Common Lisp,
595250Zdanie wtrącone? Jestem w.
Detale
Formatuj ciąg kontrolny
~a
: ładny argument wydruku (tutaj podany ciąg)~v@{...~}
: blok iteracyjny, ograniczony do iteracji V, gdzie V jest traktowane jako argument, a mianowicie(* ...)
wyrażenie. Iteracja ma powtarzać się po liście, ale po dodaniu@
modyfikatora lista jest pozostałą listą argumentów funkcji formatującej. Musi istnieć co najmniej jeden element na liście iterowanej (w przeciwnym razie wyjdziemy, pomijając V). Dlatego istnieje dodatkowy argument do sformatowania (0).Ponieważ format nie wykorzystuje żadnego elementu na liście, pętla jest nieskończona, ale na szczęście jest również ograniczona przez V, czyli liczbę nawiasów do wydrukowania.
Edycja: podziękowania dla Michaela Vehrsa za wskazanie, że nie ma potrzeby zaokrąglania argumentu liczbowego (pytanie pozwala obciąć / zaokrąglić w dowolny sposób, więc domyślne zachowanie działa tutaj).
źródło
format
przyjmuje argument dziesiętny dov
. Może również Common Lisp?format
akceptuje ...”, ponieważ standardowy schematformat
nie obsługuje~r
; a Guileformat
podąża za przykładem Common Lisp.JavaScript ES6,
383130 bajtówźródło
s=>n=>s+')'.repeat(s.length*n)
(to by się wtedy nazywało jakf("hi!")(4.99)
)Python 2 , 29 bajtów
s w ciągu, p jest procentem (liczbą całkowitą).
Wypróbuj online!
źródło
05AB1E ,
98 bajtówWypróbuj online!
Działa dla liczb całkowitych i dziesiętnych, porządek argumentów:
f(String, Double)
źródło
ï
odbywa się to domyślnie dla×
argumentu zmiennoprzecinkowego.Python, 30 bajtów
Wykorzystuje dane dziesiętne.
Wypróbuj online!
źródło
Pyth, 8 bajtów
Test online! Najpierw bierze stosunek podniecenia, a następnie ciąg, który ma być zachwycony.
Wyjaśnienie:
źródło
PowerShell , 33 bajty
Wypróbuj online!
Obsługuje format dziesiętny.
źródło
R,
624642 bajtówAnonimowa funkcja, która pobiera ciągi
a
dziesiętnen
, wypisuje dane wyjściowe na standardowe wyjście.źródło
Pyth, 9 bajtów
Pobiera dwa wiersze wejścia: ciąg znaków i stosunek (dziesiętny).
Wypróbuj na pyth.herokuapp.com
Wyjaśnienie
A
oznacza pierwszy argument funkcji,B
jej drugi argument.źródło
TI-Basic, 33 bajty
Pobiera dane dziesiętne.
źródło
Perl 5, 29 bajtów
(Liczba to pierwszy argument, łańcuch to drugi.)
Wypróbuj online!
źródło
CJam , 9 bajtów
Wypróbuj online!
Łańcuch wejściowy w pierwszym wierszu, współczynnik nacisku w zakresie od 0 do 5 w drugim wierszu.
Wyjaśnienie
źródło
MATL,
11108 bajtówTo rozwiązanie wykorzystuje postać dziesiętną drugiego wejścia
Wypróbuj online!
Wyjaśnienie
źródło
sB ~, 17 bajtów
Wyjaśniono:
Nawiasy są zamykane automatycznie
Oto dane wyjściowe kompilatora, jeśli jesteś zainteresowany:
Ta wersja kompilatora została napisana 27.01.2017 o 11:12, co mogło potrwać kilka minut po opublikowaniu tego pytania. Oto wersja, która działa na najstarszej wersji kompilatora, napisana godzinę wcześniej:
iS$,N?S$;')'*(N*l(S$))
(22 bajty)źródło
PostgreSQL, 102 bajty
Detale
Używa formatu wejściowego liczby całkowitej.
To po prostu dopasowuje łańcuch wejściowy za pomocą parens do docelowej długości.
Zadzwoniłem z
źródło
Bash + coreutils, 45 bajtów
Wypróbuj online!
Wejście całkowite.
źródło
echo $1`jot -b \) -s '' $[${#1}*$2/100]`
40 bajtów :) wypróbujGroovy, 27 bajtów
Proste rozwiązanie
Program testowy:
źródło
Rebol, 39 bajtów
źródło
Clojure, 40 bajtów
Dość nudne rozwiązanie:
Po prostu redukuje
str
funkcję na liście zamykających nawiasów z łańcuchem jako parametrem początkowym.Zobacz online: https://ideone.com/5jEgWS
Niezbyt nudne rozwiązanie (64 bajty):
Konwertuje ciąg wejściowy do symbolu (aby pozbyć cudzysłowów) i wielokrotnie stosuje funkcję
list
na nim generować nieskończoną sekwencję takiego:(a (a) ((a)) (((a))) ... )
. Bierzenth
element konwertuje go na ciąg znaków i zastępuje wszystkie otwierające nawiasy niczym.Zobacz online: https://ideone.com/C8JmaU
źródło
#(.replaceAll(str(nth(iterate list %)(*(count %)%2)))"[(\"]""")
1 bajt mniej (yay). Chciałem zrobić komp, ale nie mogę uzyskać go poniżej 70 bajtów.")"
na,\)
aby zapisać bajt.SimpleTemplate, 92 bajty
Bierze ciąg jako pierwszy parametr, a „stosunek” jako drugi.
Stosunek wynosi od 0 do 5, z 2 miejscami po przecinku.
Jak widać, nie jest optymalny.
Tam 2
{echo}
można zmniejszyć do 1.Z powodu błędu w kompilatorze tego kodu nie można znacznie zmniejszyć.
Nie golfowany:
Gdyby nie istniał żaden błąd, kod wyglądałby następująco: 86 bajtów:
źródło
C # Interactive,
7767 bajtówC # Interactive jest słodki.
źródło
using System;
lub w pełni się zakwalifikowaćMath
. Również nie jestem pewien, czy można to zrobić interaktywnie, ale można skompilować do a,Func<string, Func<int, string>>
aby zapisać bajty, tj.s=>p=>s+new...
Math.Round
po prostu rzucićint
Floor
Floor
Ceiling
SmileBASIC, 29 bajtów
źródło
3*4.99
=14.97
, tylko14
lub15
byłyby akceptowalne jako odpowiedzi, wersja 29 bajtów powinna jednak działać dobrze, przepraszam!Gol> <> (Golfish), 17 bajtów
Wypróbuj tutaj .
Górny wiersz odczytuje znaki (
i
), dopóki nie znajdzie nowej linii (ASCII 10,a
), a następnie przechodzi w dół (v
).Następnie odrzucamy jeden znak (nowy wiersz) za pomocą
~
, przesuwamy długość stosu (l
), czytamy liczbę zmiennoprzecinkową (I
), mnożymy dwa i wielokrotnie (R
) wciskamy znak „)” tyle razy. Na koniec odwróć stos (r
), wyślij go i zatrzymaj (H
).źródło
PHP, 50 bajtów
przyjmuje łańcuch i liczbę dziesiętną jako argumenty wiersza poleceń; tnie wyściółkę. Uruchom z
-r
;awaria
źródło
Rubin, 25 bajtów
Używam lambda . Program testowy mógłby wyglądać następująco:
źródło
Clojure, 68 bajtów
Anonimowa funkcja, która akceptuje wprowadzanie dziesiętne.
Dosłownie pierwszy program Lisp, jaki kiedykolwiek napisałem! Już się dobrze bawię.
źródło
#(...)
i możesz się ich pozbyćprint
(ponieważ zwroty funkcji powinny być dopuszczalne). Możesz zmienićreduce
naapply
dlastr
funkcji i możesz zmienić")"
na\)
, który robi to samo. Tak więc, ostateczny kod powinien być:#(str %(apply str(repeat(*(count %)%2)\)))))
.(#(...) "codegolf" 125)
należy dodać 125 procent długości „codegolf” zamiast 125 razy więcej niż „codegolf”. Tak więc ustalony program to:,#(str %(apply str(repeat(*(count %)%2 1/100)\))))
który ma 49 bajtów.C ++ 14, 43 bajty
Ponieważ nienazwana lambda modyfikuje dane wejściowe, założenie
s
jest podobne dostd::string
(ma.append(int,char)
i zakłada,p
że jest typu zmiennoprzecinkowego:Stosowanie:
źródło
Haskell , 37 bajtów
Wypróbuj online! Stosowanie:
"codegolf" ! 125
Wersja, która pobiera liczbę dziesiętną: (41 bajtów)
Wypróbuj online! Stosowanie:
"codegolf" ! 1.25
źródło