Zainspirowany tym mini-wyzwaniem na czacie.
Biorąc pod uwagę ciąg znaków (tylko znaki drukowalne ASCII), wypisz ciąg znaków z literami „pada” w dół. Każda litera musi być losową liczbą linii w dół (losowo między0
i długością łańcucha, z których każda ma niezerowe prawdopodobieństwo) i tylko jeden znak na kolumnę. Wszystkie możliwe wyjścia muszą ponownie mieć niezerowe prawdopodobieństwo wystąpienia.
To może być trochę mylące, więc oto przykład (wzięty z tej CMC):
Hello World
d
H
o
llo
l
W
e
r
Zwróć uwagę, że wartość H
jest o jedno miejsce w dół, d
wartość o zero w dół, a llo
wszystko się zgadza. r
Jest najdalej w dół, co 9
, ale nadal jest mniejsza niż długość łańcucha z dala od góry. To tylko jeden przykład, istnieje wiele innych możliwości wprowadzania danych Hello World
.
Inne przykłady mogą być:
test
t
e
s
t
PP&CG
& G
P
P C
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dane wejściowe są gwarantowane jako niepuste (tzn. Nigdy nie otrzymasz
""
jako danych wejściowych). - Możesz wydrukować go do STDOUT lub zwrócić jako wynik funkcji.
- Dopuszczalny jest pełny program lub funkcja.
- Dopuszczalna jest dowolna ilość obcych białych znaków, pod warunkiem, że znaki odpowiednio ustawią się w linii (np. Nie krępuj się padać jak prostokąt).
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Odpowiedzi:
R 104 bajty
Wypróbuj online!
Wprowadź jako ciąg; pisze na standardowe wyjście.
źródło
scan(,'')
i zagnieżdżając kilka wywołań, ale szczerze mówiąc, zdecydowanie wolę podejście funkcyjne, ten drugi jest ohydny dla minimalnego wzmocnienia. Może jednak zrodzić kilka pomysłów. Wypróbuj online!sample(l,,T)
wystarczysample(l,l,T)
(-1 bajt).JavaScript (ES6), 72 bajty
Pobiera dane wejściowe jako listę znaków. Zwraca macierz znaków.
Wypróbuj online!
źródło
(0|'A') === (0|undefined)
i pozostałe litery nie będą już gwarantowane w ostatnim rzędzie. (Więc w zasadzie jest tak, jakby|!a[y+1]
został całkowicie usunięty.)Math.random()
zwraca liczbę w [0, 1), więc nie możeszMath.random()<.5
zostaćMath.random()>0
?math.random()
implementacji, która ma stan wewnętrzny, a zatem nie może wygenerować unikalnego wyniku.Pyth - 9 bajtów
Wyświetla listę linii.
Wypróbuj online .
źródło
J ,
3019 bajtówWypróbuj online!
źródło
0|:]{.~"+_1-#?#
za 15 bajtów0|:]{.~"+_2-#?@##
dla 17 bajtów bez zmiany zachowania odpowiedzi.Japt , 8 bajtów
-1 bajt z @Shaggy
Wypróbuj online!
źródło
APL (Dyalog Unicode) , 16 bajtów SBCS
Anonimowa ukryta funkcja prefiksu
≢
długość sznurka1+
jeden do tego dodany≢⍴
kopie tego „długości”∘?
losowe liczby całkowite z zakresu 1… te, a następnie…∘-
negować, a następnie…⊢↑¨⍨
zabierz więcej niż wiele elementów z każdej postaci, dopełniając po lewej stronie spacjami∘↑
wymieszaj listę ciągów w macierz, dopełnianie ze spacjami po prawej stronie⍉
transponowaćWypróbuj online!
źródło
Japt , 8 bajtów
Spróbuj
źródło
Galaretka , 10 bajtów
Wypróbuj online!
źródło
0..(length - 1)
? Pytanie określa między 0 a długością łańcucha. A może coś mi brakuje?Ruby ,
595755 bajtówWypróbuj online!
Wejścia 1D, wyjście 2D tablica znaków.
źródło
PHP , 88 bajtów
Wypróbuj online!
Lub 94 bajty przy użyciu kryptograficznej funkcji losowych liczb całkowitych PHP .
Wypróbuj online!
Wejście od
STDIN
, wyjście doSTDOUT
. Uruchom jako:-1 bajt (pusty ciąg zamiast spacji) i +1 bajt (błąd po stronie reguł) dzięki do @ ASCII!
źródło
<?php
, co?>
zamyka. wydaje się również w porządku, jeśli$o
jest pusty ciągrand
funkcją PHP , ponieważ możesz mieć tekst wejściowy, który wymaga więcej losowości niż wielkość wewnętrznego seed rand używa, więc technicznie twoja odpowiedź nie spełnia tego warunku we wszystkich sytuacjachrand
nie jest zbyt przydatne, jednak wszystkie obsługiwane / produkcyjne wersje PHP (7.1+) używają Mersenne Twister RND (mt_rand
) wewnętrznie do generowania liczb losowych. Czy obawiasz się, że nie jest to wystarczająco losowe w przypadku tego wyzwania?mt_rand
korzysta również wewnętrznie z pseudolosowego systemu liczb, a także ma ograniczenia. Zakładając, że PHP jest skompilowany z liczbami 64-bitowymi (i że seed, używanyrand
lubmt_rand
akceptuje ten pełny zakres) wygenerowałby unikalne dane wyjściowe dla słów o długości do 13 znaków lub krótszej. Całkiem ograniczające, jeśli mnie zapytaszWęgiel drzewny ,
109 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano 1 bajt dzięki tylko @ ASCII. Wyjaśnienie:
Jak wskazuje tylko ASCII, możesz losowo przesuwać litery w górę zamiast w dół, aby uzyskać ten sam efekt (z tym wyjątkiem, że na dole może być więcej białych znaków zamiast na górze). Drukowanie tablicy znaków w górę jest równoznaczne z normalnym wydrukowaniem łańcucha, więc dopełnienie następnie po prostu przesuwa każdy znak w pionie o losową wartość.
źródło
05AB1E (starsza wersja) , 9 bajtów
Wprowadź jako ciąg znaków lub listę znaków (oba są w porządku).
Wypróbuj online.
Znacznie wolniejsza 9-bajtowa alternatywa:
Wprowadź jako listę znaków.
Wypróbuj online.
Oba używają starszej wersji 05AB1E, ponieważ nowa wersja wymaga jawnego
€S
przedζ
..Wyjaśnienie:
źródło
gD¸s∍ÝδΩ
ale jest już dłużej ... i ooo ... to nawet nie działa w nowym 05AB1E;).C (gcc) , 131 bajtów
Wypróbuj online!
źródło
R[j=i%l]?32:s[j]));
zamiastR[j]?32:s[j]))j=i%l;
Julia, 69 bajtów
To określa funkcję
f
, która akceptujeString
lubVector{Char}
i zwracaMatrix{Char}
.Nie golfowany:
Przykład:
Z pewnością mogłoby być lepiej; moje umiejętności gry w golfa są dość zardzewiałe.
Wypróbuj online!
źródło
Perl 5
-F
,5049 bajtów-1 przez @DomHastings
Wypróbuj online!
źródło
map$_||$",@$_
!PowerShell ,
10810298 bajtów-4 bajty dzięki mazzy
Wypróbuj online!
Zasadniczo iteruje
1..length
ciąg dwa razy, raz, aby uzyskać losowe lokalizacje linii dla każdego znaku, i drugi raz, aby faktycznie zbudować każdą linię przy użyciu tych wskaźników. Dowiedzenie się, jak to zrobić za jednym zamachem, jest tam, gdzie są oszczędności dużych bajtów.źródło
SmileBASIC 3, 62 bajty
źródło
Czerwony , 84 bajtów
Wypróbuj online!
źródło
Python - 92 bajty
źródło
import random
from random import*
.map(None,...
nie działa w Pythonie 3, więc powinieneś podać Python 2 w swoim tytule.K (oK) , 20 bajtów
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
źródło
Python 3 ,
140131 bajtówWypróbuj online!
źródło
Python 3, 208 bajtów
Tworzy listę losowych wyborów, a następnie tworzy listę kolumn z pustą przestrzenią wszędzie oprócz indeksu określonego przez każdy losowy wybór. Kolumny są transponowane na rzędy i drukowane z nowymi liniami między nimi.
Wypróbuj online!
źródło