Cel
Masz napisać program, który otrzymuje liczbę całkowitą n
jako dane wejściowe (z wiersza poleceń) i osadza n
katalogi (program) w drzewie katalogów. Przykład z n=5
:
Nazwy folderów mogą być dowolne. Jedyne wymagania to to, że głębokość jest prawidłowa, a program można następnie uruchomić ponownie z nowego miejsca w drzewie katalogów, a nowy plik źródłowy zachowuje tę samą nazwę pliku.
Bonusy:
- Wynik * 0,9 Jeśli wszystkie katalogi mają inną nazwę (musi być prawdziwe przynajmniej do głębokości 1 000 000)
- Wynik * 0,5 Jeśli nie czytasz bezpośrednio ani pośrednio pliku źródłowego, nie przenosisz go ani nie uzyskujesz dostępu do kodu źródłowego programu
code-golf
file-system
globby
źródło
źródło
ln
polecenie w * nix? Jeśli się nie mylę, to po prostu tworzy kolejny wpis do i-węzła pliku i nie czyta się żadnej treści.Odpowiedzi:
Bash, 30 * 0,9 * 0,5 = 13,5
Pierwszym argumentem jest głębia. Tworzy twarde łącze do siebie w następującej strukturze katalogów:
Skrypt można następnie uruchomić z nowej lokalizacji, nawet jeśli
rm
jest on uruchamiany na starym skrypcie.Wyjaśnienie:
seq -s/ $1
wypisuje liczby od 1 do$1
(pierwszy argument), oddzielone ukośnikiem.mkdir -p `seq -s` $1
tworzy katalog określony przezseq
,-p
tworząc wszystkie pośrednie katalogi.ln $0 $_
utwórz twardy link do bieżącego działającego skryptu w nowo utworzonym katalogu.Stare (30 * 0,9 = 27):
Przykład uruchomienia (z ln):
Dzięki @DigitalTrauma do sugestii do wymiany
$(..)
z`..`
Dzięki @hjk za sugestię użycia
ln
.źródło
$_
!$( )
: codegolf.stackexchange.com/a/25572/11259cp
sięln
dostać premię 0,5 zbyt ...mv
także jest ograniczona do tej premii 0,5. To wciąż pozostajeln
jasne, tak?ln
(nie potrzebujesz-s
) umieściłby program w nowym katalogu, aby można go było uruchomić stamtąd, bez czytania, przenoszenia ani uzyskiwania dostępu do jego oryginalnego źródła. Mówię, aby przejść do wyniku FALCON PUNCH 13,5!C, 225 * 0,9 * 0,5 = 101,25
Moje rozwiązanie w C:
Tutaj w nieco bardziej czytelnej formie:
Sprawdź, czy to działa:
W kodzie źródłowym istnieje prawdopodobnie duży potencjał golfowy.
źródło
Partia - 48 * 0,9 = 43,2
Ten skrypt po prostu tworzy nowy katalog i przenosi do niego plik źródłowy
n
.źródło
Zsh,
63605852 * 0,9 =56,75452,246,8Przykład:
źródło
s=$(<$0)
(Dla przypomnienia , dla mnie nie działa zbash
4.3.11: „błąd składni w pobliżu nieoczekiwanegozsh
d
wcześniej$i
?1
. Dziękifor i in {1..$1};{mkdir $i;cd $i};echo $s>f
.Rebol - 114 * 0,9 * 0,5 = 51,3
Nie golfowany:
Oryginalna wersja inna niż quine - 90 * 0,9 = 81
Nie golfowany:
źródło
Bash 167 * 0,5 * 0,9 = 75,15
Pożyczając dużo od świetnej odpowiedzi @ es1024 , ale ta jest prawdziwym quine, więc kwalifikuje się do obu bonusów.
Również techniki quine muszli stąd .
źródło
AutoIt3, 106 * 0,9 = 95,4 bajtów
Trochę długi, ale nie mogę pomóc z długimi nazwami funkcji / zmiennych:
Po prostu zadzwoń, używając
<script/.exe name> <depth>
np.script.exe 5
.Będzie działał dla dowolnej liczby katalogów; może nawet więcej niż twój system plików może obsłużyć. :RE
Jak to działa:
To tylko prosta pętla, która dodaje indeks do łańcucha. Następnie katalog (i wszystkie katalogi nadrzędne) zostaje utworzony, a plik kopiuje się do tego katalogu.
źródło
Node.js,
136133 * 0,9 * 0,5 =61,259,85fs.linkSync
odwzorowuje łącze wywołania POSIX , które tworzy stałe łącze. Nieprawidłowy argument spowoduje awarię programu.źródło
J, 82 * 0,9 = 73,8
Jest to głównie część najczęściej głosowanej odpowiedzi.
Zapisz jako
skittish.ijs
lub cokolwiek chcesz i wywołuj to z wiersza poleceń, używając swojej wersjijconsole
. Mój jest dowiązany dojc
:źródło
Zsh , 55 * 0,9 * 0,5 = 24,75 bajtów
Długo patrzyłem na to wyzwanie, ale chciałem je ukończyć w Zsh bez wywoływania programów zewnętrznych takich jak
mkdir
iln
(w przeciwnym razie byłoby to identyczne z rozwiązaniem bash). Okazuje się, że Zsh może dostarczać własne wersje tych programów!Wypróbuj online!
źródło