Zadanie
Twoim zadaniem jest stworzenie programu lub funkcji, która po wprowadzeniu danych wyjściowych wyprowadzi tekst z losowymi literami wielkimi literami, zachowując już wielkie litery.
Powinna być możliwa każda kombinacja wielkich liter małych liter. Na przykład, jeśli sygnał wejściowy był abc
nie powinno być niezerowy prawdopodobieństwo wyprowadzanie dowolnej z następujących kombinacji: abc
, Abc
, aBc
, abC
, ABc
, AbC
, aBC
i ABC
.
Wkład
Dane wejściowe to ciąg znaków, zawierający na przykład dowolną liczbę drukowalnych znaków ASCII Hello World
. Sygnały wyjściowe dla tego sygnału obejmują HeLLo WoRlD
, HElLO WOrld
itp
Punktacja
To jest golf golfowy, więc wygrywa najkrótsza odpowiedź w każdym języku!
Japt , 6 bajtów
Przetestuj online!
Wyjaśnienie
źródło
Python 2 ,
6665 bajtówWypróbuj online!
źródło
C,
4746 bajtówDzięki @ l4m2 za uratowanie bajtu!
Wypróbuj online!
Wynosi 42 bajty, jeśli można założyć, że
{|}~
nie pojawiają się na wejściu:Wypróbuj online!
źródło
srand(1)
na początku programu, więc w każdym wykonaniu sekwencja zwracanych wartościrand()
będzie taka sama).f(char*s){for(;*s++-=(*s-'a'<26&rand())*32;);}
jakiegoś kompilatora (def.-funsigned-char
) pracy'a'
na97u
działa i nawet nie wymaga-funsigned-char
flagi.'a'
(co jestsigned int
, nieunsigned char
) od*s
(co jestunsigned char
),*s
awansuje sięsigned int
naunsigned int
, dlatego możliwe są wartości ujemne i porównanie nie działa zgodnie z przeznaczeniem.Galaretka , 5 bajtów
Kolejny bajtuje kurz dzięki Dylnan.
Wypróbuj online!
Wyjaśnienie
źródło
ŒṘ
częściej używać, aby zobaczyć, jak rzeczy są reprezentowane pod maskąPerl 5 , 23 bajtów
Kod 22 bajtów + 1 dla
-p
.Wypróbuj online!
źródło
JavaScript (ES6), 56 bajtów
Jeśli jednolita losowość nie jest wymagana, możemy zaoszczędzić 6 bajtów, wykorzystując bieżący czas jako źródło losowości:
Zwykle jest to pisanie wielkimi literami lub pozostawienie samych liter jednocześnie.
źródło
AbC
ponieważ czas nie zmieni się tak szybkoR , 66 bajtów
Wypróbuj online!
Kolejna odpowiedź R.
źródło
for
pętli! Niezłe.Excel VBA,
747164 bajtówRandomize
Wezwanie zawsze sprawia, że wyjście losowo kosztowne w VBA :(Anonimowa funkcja bezpośredniego okna VBE, która przenosi dane wejściowe z zakresu
[A1]
i wyjścia do bezpośredniego okna VBE. Wytwarza 50% (średnio)UCase
mocy wyjściowej.źródło
Randomize:
i zmieniając zaRnd
pomocą[RAND()>.5]
. Lub po prostu zignoruj to. :)[Rand()]
wywołanie jest tylko losowe psuedo i ma długość okresu około 10 ^ 13, co czyni go funkcjonalnie identycznym z wywołaniem unRandomize
dRnd
, w rzeczywistości obie używają tego samego ziarna (które toRandomize
wywołanie ustawia za pomocątimer
funkcji wydajność).Randomize
połączenie i zamiast tego użyćRnd>.5
Węgiel ,
87 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Rubin, 40 bajtów
Funkcja Lambda, która pobiera ciąg. Oszczędność 1 bajtu dzięki Arnauldowi. Zaoszczędź 5 bajtów dzięki Snack.
źródło
<1
zamiast==1
?<s>
znacznikiem, np. „ Ruby, <s> 46 </s> 40 bajtów ”. Oczywiście nie jest to wymagane.APL + WIN, 37 bajtów
Monituje o wprowadzenie ekranu, identyfikuje małe litery i losowo konwertuje je na duże.
źródło
R ,
8988 bajtówoutgolfed przez djhurio!
Wypróbuj online!
Ten program bierze każdą postać i z prawdopodobieństwem 1/2 przekształca ją na wielkie litery lub pozostawia w spokoju. Możliwe jest dostosowanie tego prawdopodobieństwa, grając z różnymi wartościami
df
i0
.rt
czerpie z rozkładu t Studenta, który ma medianę 0 z dowolnym stopniem swobody (wybrałem,1
ponieważ jest to najmniejsza możliwa liczba).źródło
05AB1E ,
65 bajtówDziękuję Adnan za -1 bajt
Wypróbuj online!
Wyjaśnienie
Metoda zaczerpnięta z odpowiedzi @ całkowicieludzkiej
źródło
ε„luΩ.V
była moja próba, miła!Rubin, 39 bajtów
->s{s.gsub(/./){[$&,$&.upcase].sample}}
W dużej mierze zainspirowany odpowiedzią na nazwę wyświetlaną . (Nie mogłem skomentować tej jednobajtowej wersji z powodu braku reputacji, przepraszam, wyświetlana nazwa )
źródło
Swift 4, 86 bajtów
źródło
Java 8, 46 bajtów
Ta lambda jest od
IntStream
doIntStream
(strumienie punktów kodowych).Wypróbuj online
Dystrybucja wielkich liter
To, czy napisać wielką literą, było dość rozsądnym warunkiem
Math.random()<.5
, który był spełniony w połowie czasu. Przy obecnym stanieMath.random()>0
(który oszczędza bajt), wielkie litery pojawiają się praktycznie za każdym razem, co sprawia, że program testowy jest bezcelowy. Ale spełnia wymagania dotyczące losowości.Podziękowanie
źródło
z
. Mógłbym jednak wrzucić to z kwalifikacjami.Funky , 55 bajtów
Wypróbuj online!
Dzięki opcjonalnym przecinkom jest o jeden bajt krótszy do zrobienia
0s.upper
w definicji tabeli, co oznacza, żemath.random
losowo wybierze albo,1
albo2
, niż zrobićmath.random(0,1)
losowo i nie ma0
.źródło
R ,
60 59 58 57 5663 bajtówWypróbuj online!
Odmienne podejście od pozostałych dwóch odpowiedzi R tutaj i tutaj . Ulepszony i naprawiony dzięki Giuseppe!
źródło
90
jak[
, ale to rozwiąże go do +7 bajtów która nadal golfier niż odpowiedzi djhurio zaOuroboros , 25 bajtów
Wypróbuj tutaj
Jedyną częścią wyobraźnia jest przepływ sterowania
.b*)
. Porozmawiajmy najpierw o reszcie.Następnie wracamy do początku linii. Przepływ sterowania polega na zmianie miejsca końca linii; jeśli zostanie przeniesiony na lewo od adresu IP, wykonanie zostanie zakończone. A zatem:
Gdy kod znaków jest dodatni,
)
oznacza to brak możliwości, ponieważ koniec wiersza jest jak najbardziej w prawo. Ale kiedy wszystkie postacie zostaną przeczytane,i
daje-1
. Następnie przesuwamy koniec-11
znaków kodu w prawo - czyli 11 znaków w lewo. Trwa kilka iteracji, ale w końcu adres IP znajduje się za końcem kodu i program zatrzymuje się.źródło
MATL ,
1211 bajtówWypróbuj online!
Zaoszczędzono 1 bajt dzięki @LuisMendo
źródło
Brachylog , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Alice ,
1715 bajtówDzięki Leo za oszczędność 2 bajtów.
Wypróbuj online!
Wyjaśnienie
Jest to zwykła struktura dla programów w dużej mierze liniowych działających całkowicie w trybie porządkowym.
Najpierw próbowałem zrobić to całkowicie w trybie kardynalnym, ale ustalenie, czy coś jest literą opartą tylko na kodzie znaków, prawdopodobnie zabrałoby więcej bajtów.
źródło
Wolfram Language (Mathematica) ,
524944 bajtówWypróbuj online!
Używa formy operatora
StringReplace
: podając jej regułę (lub listę reguł), ale żaden ciąg nie podaje funkcji, która stosuje tę regułę do dowolnego ciągu, który podajesz jako dane wejściowe.Moglibyśmy zrobić znacznie lepiej (
RandomChoice@{#,Capitalize@#}&/@#&
34 bajty), gdybyśmy zdecydowali się wziąć jako dane wejściowe (i wygenerować jako dane wyjściowe) listę znaków, co ludzie czasem twierdzą, że w Mathematica jest w porządku, ponieważ jest to jedyny ciąg znaków w innych językach. Ale to nie jest fajne.-5 bajtów dzięki M. Stern
źródło
Capitalize
Random
jest przestarzała można zaoszczędzić kolejne cztery bajty wdrażając własnyRandomChoice
:StringReplace[c_/;Random[]<.5:>Capitalize@c]
,Random
do pracy, ale zapomniałem o tym,/;
więc starałem się umieścić wIf
oświadczeniu. Dzięki!Pyth,
1076 bajtówZaoszczędzono 3 bajty dzięki ovs i 1 dzięki Stevenowi H.
Wypróbuj online
Wyjaśnienie
źródło
r1d
=rd1
, pozwalając ci na niejawne wejście w golfa na inny bajt.PHP,
6353 bajtyUdało się zmniejszyć kod o 10 bajtów (częściowo) zgodnie z sugestią Tytusa.
źródło
$a
. Spróbujwhile(~$a=$argn[$i++])
zamiastforeach
(uruchom jako potok).PowerShell ,
5756 bajtówWypróbuj online!
-1 bajt dzięki briantist
Pobiera dane wejściowe jako ciąg znaków, jawnie rzutuje
$args
tablicę na ciąg znaków,char
rzutuje ją jako -array, a następnie przekazuje znaki przez pętlę. W każdej iteracji, 50-50 albo wypisujemy postać taką, jaka jest$_
przekształcamy go na wielkie litery"$_".ToUpper()
(to("$_"|% *per)
śmieci). Jest to wybierane przez uzyskanieRandom
liczby całkowitej i przyjęcie jej mod2
.Te znaki są pozostawione w potoku, a następnie z
-join
powrotem połączone w pojedynczy ciąg, który sam zostaje w potoku, a dane wyjściowe są niejawne.źródło
"$_".ToUpper()
na("$_"|% *per)
: - /Julia , 35 bajtów
Wypróbuj online!
Nadal jest łatwy do odczytania jako człowiek. W Julii rand (A) zwraca losowy element z A.
źródło
Rebol , 61 bajtów
Test:
źródło
Galaretka , 16 bajtów
Wypróbuj online!
Wyjaśnienie
Nie mogłem tego uruchomić w jednej linii. Ja też nie wiem dlaczego, ale
2ḶXø³L¤Ð¡
daje listę[None,1,0,..,1]
z0
s i1
s wybierane losowo. ToNone
jest powódḊ
pierwszego linku.źródło