Dwie drogi rozdzieliły się w żółtym lesie (część 1)

14

To pierwszy z serii, drugi to Dwie drogi rozbieżne w żółtym lesie (część 2)

Wyzwanie to inspirowane jest słynnym wierszem Roberta Frosta „Droga nie podjęta”:

Dwie drogi rozchodziły się w żółtym lesie.
I przepraszam, że nie mogłem podróżować obaj
I być jednym podróżnikiem, długo stałem
I patrzyłem w dół jak najdalej,
do miejsca, gdzie zgięło się w zaroślach;

Potem wziął drugą, równie sprawiedliwą,
i może mieć lepsze roszczenie,
ponieważ była trawiasta i chciała się nosić;
Chociaż z tego powodu przejazd tam
nosił je tak samo,

I oboje tego ranka po równo leżeli w
liściach, żaden krok nie był zdeptany na czarno.
Och, zatrzymałem pierwszy na kolejny dzień!
Jednak wiedząc, jak droga prowadzi do drogi,
wątpiłem, czy kiedykolwiek wrócę.

Będę opowiadać z westchnieniem
Gdzieś wieki i wieki stąd:
Dwie drogi rozchyliły się w lesie, a ja -
wziąłem tę mniej uczęszczaną,
i to zrobiło różnicę.

Zauważ przedostatniej linii I took the one less traveled by,.

Twoje rzeczywiste wyzwanie

Weźmiesz dane w formie:

#     ##
 #   ##
  # ##
   #
   #
   #

i musisz znaleźć cieńszą drogę.

Droga zaczyna się na dole od #. Pozostałe 2 drogi, które zawsze kończą się w najwyższym rzędzie, to drogi, które musisz zbadać. Droga, która jest najgrubsza, jest najczęściej podróżowana i dlatego nie jest tym, czego chcesz. Drugi jest najmniej podróżowany i jest tym, którego chcesz.

Wynik

Twój program / funkcja musi wypisać jedną z 2 odrębnych wartości (np. 0 lub 1, prawda lub fałsz), po jednej dla każdej możliwej pozycji drogi, która nie została zajęta. Na przykład możesz podać 0, jeśli droga nie została wybrana po lewej stronie drogi, a 1 w przeciwnym razie, lub możesz wpisać ciąg „w lewo” lub „w prawo”, prawda, fałsz itp.

Przypadki testowe:

 ##    #
  ##  #
   ###
    #
    #
    #

Może wyjść „w prawo”.

 ##  #   
  ## #  
   ###
    ##
     #
     #
     #

Może wyjść „w prawo”.

 ##  #   
  ## #  
   ###
    ##
   # 
  #  
 #   

Może wyjść „w prawo”.

 ##   #  
  ## #  
   ###
    #
   # 
  #  
  #  

Może wyjść „w prawo”.

 #    ## 
  #  ## 
   ###
    #
   # 
  #  
  #  

Może wyjść „w lewo”

 #    ## 
  #  ## 
   ###
    #
     #
     #
     #

Może wyjść „w lewo”

Notatki

  • To jest , więc wygrywa najkrótsza odpowiedź w bajtach
  • Standardowe luki zabronione
  • Musisz określić swoje wyniki dla „lewej” i „prawej” i muszą być one odrębne
  • Dane wejściowe będą miały jeden duży ciąg i mogą zawierać dowolną liczbę wierszy
  • Nie musisz się martwić o prawidłowe dane wejściowe.
  • Droga ma zawsze kształt litery Y, więc wystarczy spojrzeć na górę.
  • Jakieś pytania? Komentarz poniżej:

Najniższa liczba bajtów wygrywa!

programmer5000
źródło
1
Tak, zawsze # i ## oraz przekrój poziomy.
programista
1
Nie byłem ja Trochę to lubię. Dobrze zdefiniowana, dobra historia i jasne przykłady. Jest to dość łatwe do wykonania i myślę, że pomysł zaproszenia do niejasnych języków dodaje tylko dodatkowego smaku i może zachęcić do ciekawych odpowiedzi.
ElPedro
1
Język formuły IBM i Lotus Notes i Acc !! odpowiedzi są dowodem na to, że zachęcanie niezrozumiałych języków do łatwych pytań prowadzi do interesujących wyników.
programista
3
Właśnie mówiłem do siebie: „Wiesz, że wyzwanie jest proste, kiedy myślisz:„ Hej, to będzie łatwe w Acc !! ”;)
DLosc
22
@ programmer5000: Jestem jednym z downvoters. Zrewidowałem to wyzwanie, ponieważ jest to coś w rodzaju wyzwania kameleona (ponieważ wygląda na to, że chodzi o analizowanie lub inne pomiary dróg, ale tak naprawdę to po prostu „podzielenie przestrzeni, weź pierwszy odcinek”), z dużym tłem, które jest tylko stycznie związane i jeszcze bardziej zaciemniać wyzwanie; i ponieważ jest to niezwykle łatwe (coś, co zwykle sprawia, że ​​nie oceniam wyzwań). Jest również niekompletnie określony (np. Czy dane wejściowe mogą mieć szerokości inne niż 1 i 2?)

Odpowiedzi:

16

CJam , 1 bajt

r

rputs Pierwszy ciąg sąsiadujących znaków non-białych ze standardowego wejścia na stosie, więc to drukuje ##na lewo i #na prawo .

Wypróbuj online!

Dennis
źródło
4
Wygląda to na kod źródłowy Pokemon Go.
Taylor Lopez
18

JavaScript (ES6), 19 12 bajtów

Edytować:

Bardziej golfowa wersja to

a=>a.trim[1]

Zwraca #w prawo i miejsce w lewo.

Oryginalny:

a=>a.trim()[1]=='#'

Wyjaśnienie

Nie golfowany :

function(input) {
  return input.trim().charAt(1) === '#';
};

Pierwszą rzeczą, którą wykonuje ta funkcja, jest usunięcie białych znaków na początku i na końcu danych wejściowych. Oznacza to, że pierwszą postacią jest zawsze #. Następnie sprawdzam drugi znak (JavaScript zaczyna się od 0) i sprawdzam, czy jest to #znak. Zwraca wartość logiczną. Jeśli ścieżka będzie, rightto będzie true, jeśli zostanie, wróci false.

Jak to grałem w golfa

W ES6 istnieje anonimowa funkcja skrócona nazywana funkcją strzałki . Oznacza to, że mogę przejąć funkcję otoki i zmienić ją w:

input => ...;

Ze względu na reguły funkcji strzałek zwróci resztę kodu. Stamtąd konwertowane charAt(1)do [1]ponieważ jest to krótsza droga, chociaż nie zaleca . Potem wziąłem ===i zamieniłem w ==. Chociaż w tym przypadku są różne , nie ma to znaczenia. Wreszcie, przemianowany inputna ai usunięte wszystkie spacje.

Wyjście w prawo i w lewo

Chociaż łamigłówka tak naprawdę nie potrzebuje programu do wyświetlania w prawo i w lewo, oto przykład innych wyników:

a=>a.trim()[1]=='#'?'right':'left'

Jedyną dodaną częścią jest ?'right':'left'. Tworzy to trójskładnikowy operator , skondensowaną instrukcję if, co oznacza, że ​​(niestosowny) kod jest równy *:

function(input) {
  let output = input.trim().charAt(1) === '#';
  if(output) {
    return 'right';
  } else {
    return 'left'
  }
};

Przykład

// Function assignment not counted in byte count
let f =
a=>a.trim()[1]=='#'
<textarea placeholder="Put path in here" id="path" rows="10" style="width:100%"></textarea>
<button onclick="document.getElementById('result').textContent = f(document.getElementById('path').value)">Submit</button>
<p id="result"></p>

David Archibald
źródło
3
Witamy na stronie! Ładne wyjaśnienie i krótki fragment, to bardzo dokładna pierwsza odpowiedź. :)
James
2
Dzięki. Od pewnego czasu surfuję w golfa i ostatecznie postanowiłem go stworzyć. Załóżmy, że jego StackOverflow ociera się o mnie.
David Archibald
1
Wow, całkowicie obezwładniony!
programista
1
To naprawdę fajne podejście. Nie myślałem o tym.
ElPedro
1
Zedytuję go, gdy tylko @ programmer5000 odpowie. To świetny pomysł, dzięki.
David Archibald
10

Pyth, 2 bajty

hc

Wyjścia #dla lewej i ##prawej.

Wypróbuj online

Wyjaśnienie

hc
 cQ     Split the (implicit) input on whitespace.
h       Get the first part.
mbomb007
źródło
10

Acc !!, 30 bajtów

Ze względu na sposób Acc !! pobiera dane wejściowe, daje dane wyjściowe po wprowadzeniu tylko jednego wiersza danych wejściowych. Ale jeśli wpiszesz wejście do pliku lub przekierujesz go z pliku, nie powinieneś zauważyć różnicy.

Count i while 35-N {
}
Write N

Pobiera dane wejściowe ze standardowego wejścia. Wywołuje, jeśli droga po lewej jest mniej przejechana lub #jeśli droga po prawej jest mniej przejechana. Wypróbuj online!

Wyjaśnienie

Nodczytuje wartość ASCII znaku ze standardowego wejścia za każdym razem, gdy się do niego odwołuje. Pętli, podczas gdy 35-Njest prawdą; to jest, podczas gdy 35-N != 0lub N != 35. Dlatego po wyjściu z pętli właśnie przeczytaliśmy pierwszy #znak w linii. Następny znak jest następnie odczytywany za pomocą Ni zapisywany z powrotem na standardowe wyjście za pomocą Write.

DLosc
źródło
Łał! Kolejny niejasny język ...
programista
7
@ programmer5000 Jeśli chcesz poznać nieznane języki programowania, trafiłeś na właściwą stronę. ;)
DLosc
Gdzie mogę uruchomić Acc !!? Czy istnieje łącze GitHub, Tio lub inne?
programista
@ programmer5000 Kod źródłowy Python 3 znajduje się we wpisie, który podłączyłem w nagłówku, ale zobaczę, czy mogę utworzyć dla Ciebie link TIO.
DLosc
@ programmer5000 Dodano link TIO do odpowiedzi.
DLosc
8

Siatkówka, 5 bajtów

Wyprowadza, 1jeśli prawo, 0jeśli lewo.

^ *##

Wypróbuj online


Jeśli wartości dla wyniku pozytywnego nie musiały być odrębne (5 bajtów):

Zwraca dodatnią liczbę całkowitą, jeśli jest w prawo, a zero, jeśli jest w lewo.

## +#

Wypróbuj online

mbomb007
źródło
1
Łał! Jak to działa? Chcesz edytować swoją odpowiedź, aby wyjaśnić?
programista
1
@ programmer5000 To tylko testuje dane wejściowe względem wyrażenia regularnego pod kątem dopasowania.
mbomb007
6

Język formuły IBM / Lotus Notes, 37 35 26 bajtów

Edytuj Zawsze zapominam, że @Likez symbolami wieloznacznymi jest o 2 bajty tańsze niż @Contains.

Edycja 2 Właściwie nie potrzebuje tego, @ifponieważ po prostu drukuje 1lub w 0zależności od tego, czy formuła daje wyniki, @Trueczy też @False.

@Like(@Left(a;"##");"%#%")

Obliczona formuła pola. Po prostu weź wszystko na lewo od pierwszego ##znalezionego w polu, aa jeśli jest #w nim wyjście 1dla lewej, w przeciwnym razie wyjście 0dla prawej.

enter image description here

enter image description here

Dzięki @DavidArchibald, oto rozwiązanie dla 22 bajtów. Z szacunku dla rozwiązania Davidsa nie podam go jako mojej głównej odpowiedzi.

@Left(@Trim(a);2)="##"

Ten wychodzi 1na prawo i 0na lewo.

ElPedro
źródło
Łał! Dość niejasny język! Może zostać zaakceptowany, jeśli lepsza odpowiedź nie nadejdzie wkrótce ...
programista
1
Kiedyś nie byłem tak niejasny w dawnych dobrych czasach, gdy byłem młodym (er) programistą ;-)
ElPedro
4

Pip , 8 6 bajtów

a~`#+`

Pobiera dane wejściowe jako argument wiersza polecenia (który będzie wymagał cytowania i zmiany znaczenia nowych wierszy, gdy zostanie uruchomiony z rzeczywistego wiersza polecenia). Wywoływane, #jeśli droga po lewej jest mniej przejechana, a ##droga po prawej jest mniej przejechana. Wypróbuj online!

Wyjaśnienie

Wykorzystuje to ostatnio dodany operator wyrażenia regularnego Pip.

a         First cmdline arg
 ~        Regex match the first instance of...
  `#+`    ...one or more #s (i.e. a cross-section of the left-hand road)
          Print (implicit)

Proste rozwiązanie wyrażenia regularnego (port odpowiedzi Retina mbomb007 ) ma 9 bajtów:

`^ +##`Na
DLosc
źródło
Czy policzyłeś argument wiersza poleceń w liczbie bajtów?
programista
@ programmer5000 Pobieranie danych wejściowych za pomocą argumentu wiersza poleceń jest domyślnie dozwoloną metodą wprowadzania danych (i jest to zwykły sposób wprowadzania danych przez Pip). Kara bajtowa dotyczy niestandardowych flag wiersza polecenia , których nie używam w tym przesyłaniu. To powiedziawszy, w tym konkretnym przypadku, można zmienić na aa qi zamiast tego uzyskać dane wejściowe ze standardowego wejścia.
DLosc
O. Nie zrozumiałem
programista
4

Chip , 7 bajtów

AZ~S
at

Wypróbuj online!

Wyjścia 0x0dla lewej i 0x1prawej. (TIO zawiera flagę, -vdzięki czemu można zobaczyć wartości binarne w stderr. Aby zobaczyć wynik w ASCII, e*fmożna dołączyć na końcu pierwszego wiersza.)

Chip działa na pojedynczych bitach w strumieniu bajtów, co w rzeczywistości czyni go całkiem dobrym w tym konkretnym problemie.

Ajest najmniej znaczącym bitem bajtu wejściowego, a „#” jest jedynym znakiem wejściowym, dla którego ten bit jest ustawiony. Kiedy ten bit jest pierwszy raz napotkany, osiągnęliśmy pierwsze „#” pierwszego wiersza.

Z opóźnia ten sygnał o jeden cykl, abyśmy teraz patrzyli na następną postać.

tjest teraz aktywowany, co oznacza zakończenie wykonywania po zakończeniu tego cyklu. Nie musimy patrzeć dalej niż szerokość pierwszej drogi.

~Spomija moc wyjściową dla wszystkich cykli oprócz ostatniego. Gdyby tego tu nie było, otrzymywalibyśmy dane wyjściowe w każdym cyklu.

a podaje aktualną wartość swoich sąsiadów (tylko A w tym przypadku) na najmniej znaczący bit bajtu wyjściowego.

Wszystko to oznacza, że ​​otrzymujemy „ 0x1jeśli” po pierwszym „#” bezpośrednio następuje kolejne „#”, i w 0x0przeciwnym razie.

Phlarx
źródło
4

C, 35 bajtów

f(char*s){while(35^*s++);return*s;}

Taki sam pomysł, jak odpowiedź PragmaticProgrammer : znajdź pierwszą #i wypisz to, co nastąpi po niej - #dla „właściwej” i<space> dla „lewej”.

C (luka), 16 bajtów

Według przypadków testowych wygląda na to, że lewa droga zawsze ma dokładnie jedno pole od lewego marginesu. Więc...

#define f(s)2[s]
Quentin
źródło
Luka nie była zamierzona, te przypadki testowe były niepoprawne. Ale twoja odpowiedź C jest imponująca!
programista
3

Partia, 46 bajtów

@set/ps=
@for %%a in (%s%)do @echo %%a&exit/b

Odczytuje jeden wiersz ze STDIN, dzieli go na spacje i drukuje pierwsze słowo, więc wypisuje #dla lewej i ##prawej. Jeśli tablica cytowanych parametrów wiersza polecenia jest dopuszczalna, to dla 36 bajtów:

@for %%a in (%~1)do @echo %%a&exit/b

Cytuje pierwszy argument, aby został podzielony na spacje i wypisał pierwsze słowo.

Neil
źródło
3

Siatkówka , 5 bajtów

!1`#+

Wypróbuj online!

Alternatywne rozwiązanie 5-bajtowe. Drukuje #dla lewej i## prawej strony. Chodzi o to, aby dopasować wszystkie przebiegi #s ( #+) i print ( !) tylko do pierwszego z nich ( 1).

Martin Ender
źródło
3

Haskell, 21 bajtów

f n=snd$span(==' ')n!!1

lub w stylu bez punktów:

(!!1).snd.span(' '==)

„#” oznacza w prawo, a „” oznacza w lewo

Funkcja po prostu przyjmuje ciąg znaków, upuszcza spacje początkowe, a następnie przyjmuje drugi znak (spacja, jeśli lewa strona jest chuda, a #, jeśli lewa jest gruba)

EDYCJA: Oszczędź trzy bajty dzięki Laikoni i nimi!

Ogólna nazwa wyświetlana
źródło
Funkcje anonimowe są również dopuszczalne, więc (!!2).dropWhile(' '==)wystarczy jako odpowiedź.
Laikoni
To !!1dla drugiego elementu. Możesz skrócić test do <'!'. W wersji pointfree, można zastąpić dropWhileprzez snd.span.
nimi
2

Brainfuck, 32 bajty

+[>,>+++++[<------>-]<--[,.>>]<]

Nie golfowany:

+[                       while 1
>,>+++++[<------>-]<--     3 if hash; 0 if space
[,.>>]                     print next char and break iff current char is hash
<]

Wydruki # dla prawej i lewej strony.

Wypróbuj online!

Promień
źródło
2

Perl 5 , 8 + 1 = 9 bajtów

die$F[0]

Wypróbuj online!

Biegnij z -a (1 bajtowa kara).

Dane wyjściowe to (gdzie nazwa pliku jest nazwą pliku skryptu), jeśli lewa droga jest mniej uczęszczana lub jeśli prawa droga jest mniej uczęszczana.# at filename line 1, <> line 1## at filename line 1, <> line 1

Wyjaśnienie

-aOpcja automatycznie odczytuje dane wejściowe i dzieli go na kolumny wokół spacji, ignorując wiodącą spacje. Jako taki potrzebujemy pierwszego układu danych wejściowych; To $F[0]. To także umieszcza program w niejawnej pętli, której nie chcemy. Jednak użycie diepozwala na wyjście łańcucha i wyjście z niejawnej pętli w tym samym czasie (i przy nie większej liczbie znaków niż sayw zwykłym sposobie drukowania łańcucha).


źródło
Dobra kreatywność i niska liczba bajtów! Niestety, odpowiedź jest już 2-bajtowa. Czy chcesz wypróbować trzecie wyzwanie z tej serii ?
programista
2
@ programmer5000: Nie sądzę, że w Perlu jest 2-bajtowa odpowiedź (i faktycznie jest to obecnie najkrótsza odpowiedź w języku innym niż golfowy). Zazwyczaj staramy się znaleźć najlepsze rozwiązanie w każdym języku / za pomocą każdego podejścia, w przeciwnym razie nie byłoby sensu używać niczego innego niż język golfowy.
2

C 54 bajtów

char*strchr();char c(char*s){return*(strchr(s,35)+1);}

C ++ 58 bajtów

#include<cstring>
char c(char*s){return*(strchr(s,35)+1);}

Ponieważ OP określił, może to być „program / funkcja” Wybrałem, aby napisać funkcję zapisywania znaków. Jednak nadal uwzględniam instrukcję „#include” i towarzyszący jej podział wiersza w liczbie znaków, ponieważ są one wymagane do kompilacji funkcji.

Wynik

Zwraca znak spacji " "wskazujący na lewo lub skrót"#" wskazujący prawy.

Wyjaśnienie

Funkcja strchr () prowadzi dany ciąg znaków i zwraca wskaźnik do pierwszego wystąpienia określonego znaku. Ma przeciążenie, które akceptuje liczbę całkowitą jako drugi argument w przeciwieństwie do znaku, który oszczędza mi 1 znak. Np. „#” Można zastąpić 35. Następnie dodaję jeden do wskaźnika zwróconego z funkcji, aby uzyskać znak zaraz po nim, i odznaczam go, a następnie zwracam wynikowy znak.

Uwaga

Chciałbym również skorzystać z okazji, aby formalnie wyrazić irytację podczas automatycznego formatowania kodu w programie Visual Studio podczas gry w golfa (╯ ° □ °) ╯︵ ┻━┻.

Edycja: Podziękowania dla Raya za wskazanie pewnych różnic w C i C ++ i gdzie mogłem zapisać znaki <3.

PragmaticProgrammer
źródło
C / C ++ nie jest językiem: istnieją wyrażenia, które oznaczają różne rzeczy w C i C ++. Na przykład w C ++, jeśli funkcja ma pustą listę parametrów, oznacza to, że nie przyjmuje żadnych argumentów. Natomiast w C oznacza to, że parametry nie są określone. Więc jeśli zdecydujesz to program w C, można zastąpić #include <string.h>\nz char*strchr();zaoszczędzisz 6 bajtów, a jednocześnie jest całkowicie legalne. (A jeśli wolisz C ++ z jakiegokolwiek powodu, można zastąpić #include <string.h>z #include <cstring>zaoszczędzisz 1 bajt).
Ray
Ciekawe, nie byłem tego świadomy. Zaktualizowałem moją odpowiedź, dzięki.
PragmaticProgrammer
1

JavaScript (ES6), 37 bajtów

p=s=>/^ *#( |$)/.test(s.split("\n")[0])

Wyjaśnienie:

p jest funkcją, która zwraca true jeśli droga, po której mniej się porusza, znajduje się po lewej stronie, a fałsz w przeciwnym razie. To jest moja pierwsza odpowiedź na tej stronie, więc prawdopodobnie mogłaby być bardziej golfa (może regex.)

Działa, biorąc górną linię danych wejściowych i sprawdzając, czy pasuje do wyrażenia regularnego /^ *#( |$)/ (początek łańcucha, dowolna liczba spacji, # oraz spacja lub koniec łańcucha).

Ma to na celu wyjaśnienie ludziom formatu i generowanie pomysłów. Jestem pewien, że można go dalej pokonać i grać w golfa. Miłej gry w golfa!

p=s=>/^ *#[^#]/.test(s.split("\n")[0])
<textarea rows = "8" cols = "8" oninput = "console.log(p(this.value))"></textarea>

programmer5000
źródło
Myślę, że możesz mieć spację zamiast[^#]
user41805
Naprawiono problem wyrażenia regularnego.
programista
Zrobiłem krótszą odpowiedź Javascript .
David Archibald
1

Excel, 17 bajtów

=left(trim(A1),2)

Zakłada wejście w komórce A1 .

Zwraca ##dla prawej i #( #i spacji) dla lewej.

pajonk
źródło
1

Dyvil , 12 bajtów

s=>s.trim[1]

Wyjaśnienie:

s=>          // lambda expression
   s.trim    // removes leading (and trailing) whitespace
         [1] // gets the second character

Stosowanie:

let f: String -> char = s=>s.trim[1]
print f('...')

Zwraca (białe znaki) dla lewej i #prawej.

Clashsoft
źródło
1

Java 7, 166 66 63 52 43 bajty

int c(String s){return s.trim().charAt(1);}

Wyjścia 35dla prawej i 32lewej strony.
Na podstawie @Clashsoft „s Dyvil odpowiedź .

Wyjaśnienie:

int c(String s){   // Method with String parameter and integer return-type
  return s.trim()  //  Remove leading and trailing whitspaces
   .charAt(1);     //  and return the second character (as int value)
}                  // End of method

Kod testowy:

class M{
  static int c(String s){return s.trim().charAt(1);}

  public static void main(String[] a){
    System.out.println(c(" ##    #\n  ##  #\n   ###\n    #\n    #\n    #"));
    System.out.println(c(" ##  #   \n  ## #  \n   ###\n    ##\n     #\n     #\n     #"));
    System.out.println(c(" ##  #   \n  ## #  \n   ###\n    ##\n   # \n  #  \n #   "));
    System.out.println(c(" ##   #  \n  ## #  \n   ###\n    #\n   # \n  #  \n  #  "));
    System.out.println(c(" #    ## \n  #  ## \n   ###\n    #\n   # \n  #  \n  #  "));
    System.out.println(c(" #    ## \n  #  ## \n   ###\n    #\n     #\n     #\n     #"));
  }
}

Wypróbuj tutaj.

Wynik:

35
35
35
35
32
32
Kevin Cruijssen
źródło
0

Befunge 98, 11 bajtów

-!jv~'
@.~<

Wypróbuj online!

Drukuje 32dla lewej i35 prawej strony, zarówno z jedną spacją końcową.

Wyjaśnienie

-!jv      This is a no-op the first time through, but used later

    ~'    Pushes the ASCII value of the next character, and pushes 32
-!        Subtracts the 2, and nots. If the character was a space, the top will be 1
  jv      Goes to the second line if the character was not a space

  ~<      Pushes the next characer's ASCII value
 .        Prints it (32 for " " and 35 for "#")
@         Ends the program

Jedną sztuczką, której użyłem, było postawienie -!jvpierwszej, mimo że nic nie zrobiła. Pozwoliło mi to zarówno pozbyć się miejsca po 'i zaoszczędzić trochę wypełnienia. W tym ostatnim kod byłby

~' -!jv
   @.~<

na 15 bajtów.

Łagodnie Milquetoast
źródło
0

Ruby, 20 bajtów

->r{r.strip[1]==' '}

Zwraca true dla lewej, false dla prawej.

dkudriavtsev
źródło