Was ist mein zweiter Vorname?

30

Hinweis: Die Gewinnerantwort wird am 17.04.17 ausgewählt. Der aktuelle Gewinner ist Jolf, 1 Byte .

Ich bin überrascht, dass wir auf dieser Website noch keine Frage zu meinem zweiten Vornamen hatten. Ich habe viel gesucht, aber nichts gefunden. Wenn dies ein Dup ist, kennzeichnen Sie es bitte als solches.

Deine Herausforderung

Analysieren Sie eine Zeichenfolge, die aussieht, Jo Jean Smithund geben Sie zurück Jean.

Testfälle

Input: Samantha Vee Hills
Output: Vee

Input: Bob Dillinger
Output: (empty string or newline)

Input: John Jacob Jingleheimer Schmidt
Output: Jacob Jingleheimer

Input: Jose Mario Carasco-Williams
Output: Mario

Input: James Alfred Van Allen
Output: Alfred Van 

(Letzteres ist technisch nicht korrekt, aber es wäre zu schwierig, das zu beheben.)

Anmerkungen:

  • Namen haben immer mindestens 2 durch Leerzeichen getrennte Teile mit unbegrenzten Zwischennamen oder können eine Liste / ein Array von Zeichenfolgen sein.
  • Namen können das Alphabet enthalten (Groß- / Kleinschreibung wird nicht berücksichtigt) und - ( 0x2d)
  • Sie können eine abschließende Newline ausgeben.
  • Möglicherweise benötigen Sie Eingaben für eine nachgestellte Zeile.
  • Eingaben von STDIN, einem Funktionsparameter oder einem Befehlszeilenargument sind zulässig, eine Hardcodierung ist jedoch nicht zulässig.
  • Standardlücken verboten.
  • Ausgabe kann Funktionsrückgabewert, STDOUT, STDERR usw. sein.
  • Nachgestellte Leerzeichen / Zeilenumbrüche / Tabulatoren in der Ausgabe sind zulässig.
  • Irgendwelche Fragen? Kommentiere unten!

Das ist , also gewinnt die kürzeste Antwort in Bytes!

programmer5000
quelle
2
Kann die Ausgabe eine Liste von Zeichenfolgen sein?
Anthony Pham
5
Wenn andere Formate als eine durch Leerzeichen getrennte Zeichenfolge zulässig sind, bearbeiten Sie diese bitte in der Spezifikation.
Martin Ender
5
@ programmer5000: Wenn die Eingabe eine Liste von Zeichenfolgen sein kann, wie sieht es mit der Ausgabe aus? Ist ["John", "Jacob", "Jingleheimer", "Schmidt"]-> ["Jacob", "Jingleheimer"]eine gültige Lösung?
Nimi
3
Sind führende Leerzeichen erlaubt?
Betseg
2
@DJ Weil "Van" nicht sein zweiter Vorname ist, ist es Teil seines Nachnamens. Ein besonders ärgerlicher Fall ist David Lloyd George, dessen Vorname David und Nachname Lloyd George ist. Jeder Versuch, die Namen von echten Menschen so zu analysieren, ist zum Scheitern verurteilt. Tatsächlich kann man nicht einmal sagen, wie Vor- und Nachnamen lauten (denken Sie an Li Shi).
David Conrad

Antworten:

4

Jolf, 1 Byte

Ruft das Innere der Eingabe ab. Probieren Sie es hier aus!

Conor O'Brien
quelle
Das Beispiel scheint nicht zum Laufen zu kommen - nichts scheint zu passieren, wenn ich auf eine der Schaltflächen klicke. Verwenden von Chrome 57.0.2987.133
@YiminRong Ich kann nur versichern, dass es auf Firefox funktioniert.
Conor O'Brien
44

Ohm , 2 Bytes (CP437)

Akzeptiert eine Liste von Zeichenfolgen und gibt sie zurück.

()

Erläuterung:

()   Main wire, arguments: a

(    Remove the first element of a
 )   ...and then the last element of that
     Implicit output
Nick Clifford
quelle
10
Das richtige Werkzeug für den Job, denke ich
Rohan Jhunjhunwala
15

Vim, 6 5 Bytes

dW$BD

Probieren Sie es online!

(Ausgaben mit einem Leerzeichen am Ende)

Da Vim mit V abwärtskompatibel ist, habe ich einen TIO-Link für V hinzugefügt.

Erläuterung

dW                      " Delete up to the next word (removes the first name)
$                       " Go to the end of the line
B                       " Go back one word
D                       " Delete it
Kritixi Lithos
quelle
Drat, du hast mich geschlagen. dWWDSpart Ihnen ein Byte.
DJMcMayhem
5
@DJMcMayhem Das funktioniert nur für genau einen zweiten Vornamen.
Martin Ender
Was ist der Unterschied zwischen dW und dw?
Duncan X Simpson
1
@DuncanXSimpson dWlöscht bis zum Leerzeichen. dwlöscht bis Nicht-Wortzeichen.
Fund Monica Klage
14

Python , 24 Bytes

lambda n:n.split()[1:-1]

Probieren Sie es online aus!

Eingabeformat: Zeichenfolge


Python 2 , 16 Bytes

lambda n:n[1:-1]

Probieren Sie es online Listeneingabe!

Eingabeformat: Liste

Keerthana Prabhakaran
quelle
Du solltest den Titel mit editieren Pythonanstatt Python 2, weil es auch funktioniert Python 3, wollte das gerade posten.
Mr. Xcoder
@ L3viathan da OP das Ausgabeformat nicht erwähnt must be a stringhat und das Eingabeformat eine Liste sein darf, kann das Drucken einer Liste nicht als falsches Ergebnis gewertet werden !
Keerthana Prabhakaran
Gemäß den Kommentaren zu der Frage können Sie eine Liste von Zeichenfolgen sowohl eingeben als auch ausgeben. Speichern Sie eine Reihe von Byteslambda n:n[1:-1]
Luke Sawczak
1
Da Sie von STDIN lesen können, können Sie das Lambda durch input()(nur Python 3) ersetzen
BallpointBen
Du hast recht. Vielen Dank. Ich habe die Änderungen hinzugefügt!
Keerthana Prabhakaran
13

Brain-Flak , 133 Bytes

{{}((((()()()()){}){}){}[{}](<()>)){{}{}(<(())>)}{}}{}{({}<>)<>}<>{{}((((()()()()){}){}){}[{}](<()>)){{}{}(<(())>)}{}}{}{({}<>)<>}<>

Probieren Sie es online!

132 Byte Code plus 1 Byte für das -cFlag, das ASCII-Ein- und Ausgabe ermöglicht.

Leider enthält es viele doppelte Codes, aber es wäre wirklich schwierig, sie wiederzuverwenden. Ich werde es später untersuchen. Hier ist eine Erklärung:

#While True
{
    #Pop
    {}

    #Not equals 32
    ((((()()()()){}){}){}[{}](<()>)){{}{}(<(())>)}{}

#Endwhile
}

#Pop the 0
{}

#Reverse Stack
{({}<>)<>}<>

#While True
{
    #Pop
    {}

    #Not equals 32
    ((((()()()()){}){}){}[{}](<()>)){{}{}(<(())>)}{}

#Endwhile
}

#Pop the 0
{}

#Reverse Stack
{({}<>)<>}<>
DJMcMayhem
quelle
86 Bytes, wenn Sie die Kommentare entfernen. Ich habe die ersten beiden und die letzte Zeile hinzugefügt. TIO
Riley
@ Riley Coole Lösung. Fühlen Sie sich frei, es selbst zu posten!
DJMcMayhem
12

05AB1E , 2 Bytes

¦¨

Probieren Sie es online!

Wenn die Ausgabe einer Liste mit Zweitnamen nicht zulässig ist, ändere ich sie.

Erik der Outgolfer
quelle
12

Haskell, 23 , 17 9 Bytes

init.tail

Nimmt und gibt eine Liste von Zeichenfolgen zurück. Probieren Sie es online!

Erste Zeichenfolge löschen, letzte Zeichenfolge löschen.

Edit: @Generic Display Name merkt an, dass die Eingabe eine Liste von Zeichenketten sein kann, die 6 Bytes spart.

Edit II: Liste der Zeichenfolgen anstelle einer einzelnen Zeichenfolge zurückgeben

nimi
quelle
Es sieht so aus, als ob eine Eingabe als Liste zulässig ist. Löschen Sie daher die Wörter für -5 Byte
Generischer Anzeigename
@GenericDisplayName: Oh, habe es nicht bemerkt. Vielen Dank!
Nimi
Meine Ohm-Antwort und die Mathematica-Antwort beantworten auch beide Ausgabelisten von Zeichenfolgen. Sie könnten also wahrscheinlich unwords.für -8 Byte fallen.
Nick Clifford
@ NickClifford: Ja, das habe ich selbst gesehen und beim OP um Klärung gebeten.
Nimi
11

Mathematica, 10 Bytes

Rest@*Most

Eine unbenannte Funktion, die eine Liste von Zeichenfolgen akzeptiert und zurückgibt.

Restverwirft das letzte Element, Mostverwirft das erste Element, @*ist Funktionszusammensetzung. Das Vertauschen Restund / Mostoder Verwenden der richtigen Komposition /*würde ebenfalls funktionieren. Dies übertrifft die Indizierung #[[2;;-2]]&um ein Byte.

Martin Ender
quelle
10

Brain-Flak , 86 Bytes

(()()){({}[()]<{{}((((()()()()){}){}){}[{}](<()>)){{}{}(<(())>)}{}}{}{({}<>)<>}<>>)}{}

Probieren Sie es online!

Der größte Teil dieses Codes stammt aus dieser Antwort . Wenn Sie meine Lösung mögen, sollten Sie auch diese positiv bewerten.

#Push 2
(()())

#Loop twice
{({}[()]<

  #While not a space
  {
      #Pop
      {}

      #Not equals 32
      ((((()()()()){}){}){}[{}](<()>)){{}{}(<(())>)}{}

  #Endwhile
  }

  #Pop the 0
  {}

  #Reverse Stack
  {({}<>)<>}<>

#End loop twice
>)}{}
Riley
quelle
Gut gemacht! Ich habe nicht daran gedacht, einen Zähler zum späteren Schieben zu halten, also habe ich zu lange darüber nachgedacht, wie ich verschiedene Stapel durchlaufen soll.
DJMcMayhem
8

Java 7, 74 Bytes

String f(String s){return s.substring(s.indexOf(' '),s.lastIndexOf(' '));}

Java 8, 49 Bytes

s->s.substring(s.indexOf(' '),s.lastIndexOf(' '))

Funktion, die das erste Vorkommen des Leerzeichens und das letzte identifiziert und die Mitte extrahiert. Der resultierenden Zeichenfolge wird ein Leerzeichen vorangestellt (zum Zeitpunkt der Veröffentlichung hat OP nicht geklärt, ob führende Leerzeichen zulässig sind), das durch Hinzufügen .trim()des Codes zu einem Aufpreis von 7 Byte beseitigt werden kann .

Im Vergleich zu C # hat Java den Vorteil, dass der Endindex anstelle der Länge der Teilzeichenfolge angegeben wird, wodurch die Byteanzahl verringert wird.

adrianmp
quelle
7

JavaScript (ES6), 22 Byte

Nimmt eine Reihe von Zeichenfolgen auf und gibt sie aus.

([_,...a])=>a.pop()&&a

Testfälle

String-Version (27 Bytes)

Nimmt einen String und gibt ihn aus. Die Ausgabezeichenfolge ist entweder ein einzelnes Leerzeichen, wenn kein zweiter Vorname gefunden wurde, oder der zweite Vorname mit führenden und nachfolgenden Leerzeichen.

s=>(/ .* /.exec(s)||' ')[0]

Arnauld
quelle
/./.exec.bind(/ .* /)scheint # 2 zu imitieren, außer nullfür keine
Dandavis
7

AWK , 17 10 Bytes

7 Bytes gespart dank @steve!

$NF=$1=x;1

Probieren Sie es online!

Erläuterung:

$NF=    set last word to
$1=     set first word to
x       an empty variable, ie empty string
1       default action, ie print everything
betseg
quelle
Kann auf 11 Bytes $NF=$1="";1
reduziert werden
3
Oder 10 mit$NF=$1=x;1
Steve
1
@ Steve, was macht 1? Ich bin nicht so gut in AWK :)
Betseg
1 bedeutet nur, die Standardaktion auszuführen, dh $ 0 zu drucken.
Steve
6

Groovy , 19 Bytes

{it.split()[1..-2]}

Erläuterung:

{        
 it                  all closures have an implicit argument called "it"
   .split()          splits by spaces by default. Returns an array of words
           [1..-2]   take the whole array from the second index (1) to the penultimate index (-2). Implicitly return
                  }

Eine Schließung / anonyme Funktion

statische Methode
quelle
1
Willkommen bei PPCG! Können Sie eine Liste von Zeichenfolgen als Eingabe nehmen, um die zu überspringen .split()?
Martin Ender
Martin Ender Ja, wenn Sie davon ausgehen, dass die Eingabe immer eine Liste von Zeichenfolgen sein wird, dann würde {it [1 ..- 2]} funktionieren.
staticmethod
5

PHP, 37 Bytes

<?=join(" ",array_slice($argv,2,-1));

-4 Bytes für eine Ausgabe als Array

print_r(array_slice($argv,2,-1));

PHP, 42 Bytes

echo trim(trim($argn,join(range("!",z))));

PHP, 50 Bytes

echo preg_filter("#(^[^\s]+ |[^\s]+$)#","",$argn);
Jörg Hülsermann
quelle
4

Retina , 11 Bytes

^\S+ |\S+$

Probieren Sie es online!

Stimmt mit dem ersten Wort (einschließlich des Leerzeichens danach) und dem letzten Wort überein und entfernt beide.

Wenn E / A eine durch Zeilenvorschub getrennte Liste sein kann, kann dies stattdessen in 8 Bytes erfolgen:

A1`
G-2`

Probieren Sie es online!

Martin Ender
quelle
4

Perl 5 , 27 18 Bytes

Muss mit -nOption ausgeführt werden.

/ (.+) /&&print$1

Probieren Sie es online!

Wollte etwas Ähnliches zuerst in sed machen, aber leider unterstützt es nicht-gierige Quantifizierer nicht. Es wird benötigt, wenn der zweite Vorname mehr als ein Wort enthält.

Bearbeiten

-9 Bytes dank Dada .

Nicht-gierige Quantifizierer werden unter anderem nicht mehr benötigt.

Maxim Mikhaylov
quelle
/ (.+) /&&print$1sollte sorter sein. Es ist großartig, neue Leute beim Golfen mit Perl zu sehen!
Dada
@Dada Danke für den Tipp! Eigentlich schreibe ich zum ersten Mal in Perl. Weißt du warum print if s| (.+) |\1|nicht funktioniert? Für mich sieht es ähnlich aus wie das, was Sie geschrieben haben.
Maxim Mikhaylov
print if s| (.+) |\1|ersetzt den Mittelteil durch ... den Mittelteil! (abzüglich der Leerzeichen davor und danach), damit es nicht funktioniert. Auf der anderen Seite stimmt das , was ich vorgeschlagen habe, nur mit dem mittleren Teil überein und druckt nur diesen ( $1).
Dada
4

Javascript (ES6) 49 16 Bytes

Bearbeiten:

a=>a.slice(1,-1)

Probieren Sie es online!

ungolfed:

function(name) {
  return a.slice(1, -1); //start at the second item and end at the second to last item
};

Ich habe einige der einfachen Eigenschaften von vergessen slice , und dass die Eingabe ein Array sein kann. Dank @Neil und @ fəˈnəˈtɛk konnte ich 27 Bytes entfernen. Immer noch nicht wirklich konkurrierend.

Original:

Dies ist nicht wirklich konkurrierend, aber hier ist eine Javascript-Lösung:

a=>{a=a.split(' ');return a.slice(1, a.length-1)}

Dies erzeugt eine anonyme Funktion, die gleich ist mit:

function(name) {
  let name = name.split(' '); //first middle last -> [first, middle, last]
  return name.slice(1, name.length - 1); //get the second item to the second to last item in the array.
}

Wie ich es gespielt habe

Dies ist ein ziemlich einfaches Golfspiel. Ich habe die Funktion in eine Pfeilfunktion umgewandelt . Dann habe ich den Code "verkleinert". Dies beinhaltete das Umbenennen namein ein einzelnes Zeichen ( ain diesem Fall) und das Entfernen deslet Deklaration der Variablen.

Ausschnitt

Hoffe, das hilft jedem, der sich der Herausforderung stellt.

David Archibald
quelle
Das length -ist unnötig, da slicenegative Längen bereits als relativ zum Ende akzeptiert werden. Dies bedeutet, dass Sie die Zwischenvariable nicht mehr benötigen, sodass Sie Ihre Pfeilfunktion von einem Block in einen Ausdruck umwandeln können.
Neil
Eigentlich funktioniert es so, dass -1es das vorletzte ist, das Sie hier brauchen.
Neil
Es ist auch Slice (1, -1). Slice (1, -2) entfernt zwei vom Ende.
fəˈnəˈtɪk
Sie können auch davon ausgehen, dass Ihnen zunächst ein Array übergeben wurde, mit dem Sie einfach einen Slice ausführen und fertig sind.
f 3nəˈt atk
Ich bin mir zu 99% sicher, dass sich das geändert hat, seit ich damit angefangen habe. Danke noch einmal.
David Archibald
3

Röda , 9 Bytes

{_[1:-1]}

Probieren Sie es online!

Keine sehr interessante Lösung. Nimmt eine Liste aus dem Stream und gibt die zweiten Vornamen zurück.

21 Bytes und I / O:

{[(_/" ")[1:-1]&" "]}

Probieren Sie es online!

Dies verwendet /(split) und &(join).

fergusq
quelle
3

Gelee , 2 Bytes

ḊṖ

Probieren Sie es online!

Dies funktioniert als Nicht-Inline-Link (dh Funktion), nicht als vollständiges Programm.

'John','Jacob','Jingleheimer','Schmidt''Jacob','Jingleheimer'

Als vollständiges Programm wären es 3 Bytes ḊṖK:, die einen durch Leerzeichen getrennten zweiten Vornamen ausgeben.

Erik der Outgolfer
quelle
3

C #, 67 Bytes

s=>s.Substring(s.IndexOf(' ')+1,s.LastIndexOf(' ')-s.IndexOf(' '));

Anonyme Funktion, die das erste Vorkommen des Leerzeichens und das letzte identifiziert und die Mitte extrahiert. Es extrahiert auch einen nachfolgenden Speicherplatz, der auf Kosten von 2 Byte entfernt werden kann.

Volles Programm mit Testfällen:

using System;

namespace WhatsMyMiddleName
{
    class Program
    {
        static void Main(string[] args)
        {
            Func<string, string> f =
            s=>s.Substring(s.IndexOf(' ')+1,s.LastIndexOf(' ')-s.IndexOf(' '));

            Console.WriteLine(f("Jo Jean Smith"));          // "Jean"
            Console.WriteLine(f("Samantha Vee Hills"));     // "Vee"
            Console.WriteLine(f("Bob Dillinger"));          // ""
            Console.WriteLine(f("John Jacob Jingleheimer Schmidt"));// "Jacob Jingleheimer"
            Console.WriteLine(f("Jose Mario Carasco-Williams"));    // "Mario"
            Console.WriteLine(f("James Alfred Van Allen")); // "Alfred Van"
        }
    }
}
adrianmp
quelle
3

Kotlin , 39 Bytes

s.filterIndexed{i,j->i!=0&&i!=s.size-1}

Probieren Sie es online!

dh

s.filterIndexed{ index, value -> index != 0 && index != (s.size - 1) }
leuchtender_hafen
quelle
3

VBA, 69 Bytes

Sub m(n)
f=InStr(1,n," ")
Debug.?Mid(n,f+1,InStrRev(n," ")-f)
End Sub
Ingenieur Toast
quelle
3

R 30, 27 22 Bytes

Aktuelle Lösung durch user11599!

head(scan(,''),-1)[-1]

Übernimmt die Eingabe von stdin und gibt jeden zweiten Vornamen als separate Zeichenfolge zurück. Gibt character()zurück, wenn kein zweiter Vorname angegeben ist. das heißt, ein Vektor der Klasse characterder Länge0 .

Erläuterung:

Lies stdin in eine Liste von Strings, die durch Leerzeichen getrennt sind

     scan(,'')

Entfernen Sie das letzte Element. headGibt die ersten nElemente einer Liste zurück, wobei der nStandardwert "" ist 6. Wenn nist -1, werden alle Elemente bis auf das letzte zurückgegeben.

head(scan(,''),-1)

Entfernen Sie nun das erste Element dieser Liste.

head(scan(,''),-1)[-1]

Dies ergibt den zweiten Vornamen.

rturnbull
quelle
1
Noch kürzer: head (scan (, ''), - 1) [- 1] 22 Bytes. Beachten Sie, dass '' zwei einfache Anführungszeichen sind.
user11599
Wenn Sie nicht möchten, dass jeder Name in Anführungszeichen gesetzt wird, verwenden Sie bei 27 Bytes cat (head (scan (, ''), - 1) [- 1])
user11599
Erklärung: scan (, '') zerlegt die Zeichenkette in Wörter, head (..., - 1) löscht das letzte Wort, head (..., - 1) [- 1] löscht dann das erste Wort, cat () formatiert die Ausgabe, wobei die Anführungszeichen gelöscht werden. Für keinen zweiten Vornamen ist das Ergebnis nicht perfekt, sondern das Zeichen (0), die leere Zeichenfolge.
user11599
@ user11599 Wow, danke! Ich hatte mit head()und gespielt tail(), aber ich wusste nicht, dass Sie als zweites Argument eine negative Zahl übergeben können. Nett!
Rturnbull
Ihre Verwendung von scan (, '') hat mich inspiriert. Ich dachte nicht daran, mich so zu nähern.
user11599
3

Ruby, 24 13 Bytes

p ARGV[1..-2]

11 Bytes gespart dank Piccolo, der darauf hinweist, dass eine Array-ähnliche Ausgabe zulässig ist.

Nimmt den Namen als separates Kommandozeilenargument, zB:

$ ruby script.rb John Jacob Jingleheimer Schmidt

oder

$ ruby -e 'p ARGV[1..-2]' John Jacob Jingleheimer Schmidt

Vorheriger Code (gibt eine richtige Zeichenfolge aus):

puts ARGV[1..-2].join" "
Flambino
quelle
@Jordan Gute Idee - allerdings $><<ARGV[1..-2].join" "beschwert es sich über das " "Unerwartete, also müsste ich Klammern hinzufügen - was am Ende 1 Byte hinzufügen würde.
Flambino
Ah, natürlich. Mein Fehler.
Jordanien
Auf dem Originalposter stand, dass die Ausgabe ein Array sein kann, sodass Sie einige Zeichen abschneiden können, indem Sie einfach Ihren Code auf ändern puts ARGV[1..-2], damit Sie es wissen.
Piccolo
@ Piccolo Huh? Ich sehe das nirgendwo? Wenn wahr; p ARGV[1..-2]für 13 Bytes - sieht einfach nicht aus wie die Ausgabe in OPs Herausforderung
Flambino
3

Golang , 152 81 Bytes

import ."strings"
func f(x string)[]string{var k=Fields(x);return k[1:len(k)-1];}

Die Eingabe erfolgt als "Samantha Vee Hills" (mit doppelten Anführungszeichen) und der zweite Vorname wird an die Standardausgabe zurückgegeben.

Probieren Sie es online!

Edit: @Dada, beachte, dass die "Funktion als Antwort erlaubt" meinen Code um 71 Bytes verkürzt. ein großes Dankeschön!

ersinakyuz
quelle
Willkommen auf der Seite. Das Senden einer Funktion als Antwort ist zulässig. Sie können Ihren Code also folgendermaßen verkürzen: Probieren Sie es online aus! . Werfen Sie einen Blick auf die Tipps zum Golfen in Go !
Dada
danke @Dada für Tips und kürze meinen Code. Es war meine erste Codeeingabe.
ersinakyuz
3

Matlab, 81 , 79 , 78 , 55 Bytes

function x=a(s)
s=strsplit(s);x=strjoin(s(2:end-1));end

Übernimmt eine Eingabezeichenfolge, s , wird (durch das Standardtrennzeichen, Whitespace-Zeichen) in ein Zellenarray aufgeteilt, von dem aus auf das mittlere Element zugegriffen wird. Dann werden die mittleren Elemente verkettet oder es wird eine leere Zeichenfolge zurückgegeben.

Edit: Danke an Luis Mendo für das Speichern von 3 Bytes!

Edit 2: Bessere Lösung von Ankit!

Owen Morgan
quelle
Ich bin kein kluger Mann! bearbeitet.
Owen Morgan
Sie können nicht nnzfür ein Zellenarray verwenden, aber ich habe die anderen beiden Änderungen vorgenommen :)
Owen Morgan
Vorgeschlagene Bearbeitung von Ankit , der nicht genug Repräsentanten hat, um einen Kommentar abzugeben. (55 Bytes):function x=a(s) s=strsplit(s);x=strjoin(s(2:end-1));end
mbomb007
3

C, 42 Bytes

f(char**b){for(;b[2];printf("%s ",*++b));}

Der Parameter ist ein mit NULL abgeschlossenes Array von Zeigern auf char.

Sehen Sie , wie es hier funktioniert .

Die Befehlszeilenargumente können auch mit derselben Funktion verwendet werden .

C, 51 Bytes

main(a,b)char**b;{for(;b[3];printf("%s ",b++[2]));}

Ein volles Programm. Die Eingabe erfolgt über Befehlszeilenargumente.

Sehen Sie , wie es hier funktioniert .

C 54 Bytes

f(char**b){*strrchr(*b=strchr(*b,32),32)=0;*b+=!!**b;}

Der Parameter ist ein In / Out-Parameter.

Sehen Sie , wie es hier funktioniert .

2501
quelle
Willkommen bei PPCG!
Martin Ender
Beim Kompilieren mit Visual Studio 2012 wird die folgende Fehlermeldung angezeigt: Fehler C2100: Unzulässige Indirektion
Johan du Toit
@JohanduToit VS ist nicht C11- oder sogar C99-konform. Mein Code ist. Als praktischer Beweis kompilieren sowohl gcc als auch clang ein gültiges Programm.
2501,
2

Python 2, 42 19 16 Bytes

lambda n:n[1:-1]

Probieren Sie es online! Vielen Dank an @Kritixi Lithos für die Einsparung von 23 Bytes! Vielen Dank an @math_junkie für das Speichern von 3 weiteren Bytes. Setzen Sie zur Eingabe jeden Teil des Namens als Zeichenfolge in eine Liste wie folgt:

["Samantha", "Vee", "Hills"]

Und ja, das OP hat eine Liste als gültige Eingabe genehmigt.

Erläuterung

lambda n:n[1:-1]    # Returns only the middle elements... pretty literal here
Anthony Pham
quelle
1
print input()[1:-1]ist kürzer
Kritixi Lithos
Spring Slicing ist sicher knifflig
Anthony Pham
lambda n:n[1:-1]ist noch kürzer
Math Junkie
1
Möglicherweise habe ich es mit einer falschen Eingabe versucht. Aber als ich versuchte, mit Samantha Vee Hillsals Eingabe in repl.it Link, den Sie geteilt haben, wird nur gedruckt, amantha Vee Hillwas definitiv nicht die Ausgabe ist, die benötigt wird.
Keerthana Prabhakaran
2
Names will always have at least 2 space-separated partsIst der erste Punkt der Frage richtig.
Keerthana Prabhakaran
2

C ++, 91 Bytes

#import<list>
#import<string>
void f(std::list<std::string>&n){n.pop_front();n.pop_back();}

Nimmt Eingaben als Referenz auf eine Liste von Zeichenfolgen und ändert die Liste direkt.

Probieren Sie es online!

Steadybox
quelle