The Name Game: Difference between revisions
m
syntax highlighting fixup automation
No edit summary |
Thundergnat (talk | contribs) m (syntax highlighting fixup automation) |
||
Line 55:
{{trans|Python}}
<
V l = [String(‘b’), ‘f’, ‘m’]
V s = n[1..]
Line 66:
L(n) [‘Gary’, ‘Earl’, ‘Billy’, ‘Felix’, ‘Mary’]
print_verse(n)</
=={{header|Ada}}==
{{works with|Ada|Ada|2012}}
<
with Ada.Strings.Unbounded;
with Ada.Text_IO;
Line 123:
Lyrics(+name);
end loop;
end The_Name_Game;</
{{out}}
<pre>Gary, Gary, bo-bary
Line 154:
=={{header|ALGOL 68}}==
{{works with|ALGOL 68G}}
<
main:(
PROC print lyrics = (STRING name) VOID:
Line 183:
OD
)
</syntaxhighlight>
=={{header|AutoHotkey}}==
<
BFM := false
if (SubStr(x, 1, 1) ~= "i)^[AEIOU]") ; Vowel
Line 201:
result .= output "`n`n"
}
MsgBox, 262144, ,% result</
{{out}}
<pre>Gary, Gary, bo-bary
Line 229:
=={{header|AWK}}==
<syntaxhighlight lang="awk">
# syntax: GAWK -f THE_NAME_GAME.AWK
BEGIN {
Line 247:
printf("%s!\n\n",x)
}
</syntaxhighlight>
{{out}}
<pre>
Line 284:
=={{header|BASIC256}}==
{{trans|FreeBASIC}}
<
x = lower(nombre)
x = upper(mid(x,1,1)) + (mid(x,2,length(x)-1))
Line 319:
call TheGameName(listanombres[i])
next i
end</
{{out}}
<pre>
Line 328:
=={{header|C}}==
{{trans|Kotlin}}
<
#include <string.h>
Line 366:
for (i = 0; i < 6; ++i) print_verse(names[i]);
return 0;
}</
{{out}}
Line 403:
=={{header|C sharp|C#}}==
{{trans|Java}}
<
using System.Collections.Generic;
using System.Text;
Line 440:
}
}
}</
{{out}}
<pre>Gary, Gary, bo-bary
Line 474:
=={{header|C++}}==
{{trans|C#}}
<
#include <iostream>
#include <string>
Line 532:
return 0;
}</
{{out}}
<pre>Gary, Gary, bo-bary
Line 570:
Note also the code on lines 30 and 75 to convert the case of the first letter... On some Commodore machines, the default is to render text in ALL CAPS, shifted letters become graphic symbols. This program sets the mode to display mixed case [chr$(14)] and then converts the first letter of the name for the purpose of uniform pattern matching in case the user types the name properly with a capitalized first letter.
<
2 rem rosetta code
5 dim cn$(3),bl$(3,32):gosub 1000
Line 628:
2050 rem quadgraph
2060 data schr,schl
2069 data xx</
{{out}}
Line 689:
=={{header|D}}==
<
import std.array;
import std.conv;
Line 741:
printVerse(name);
}
}</
=={{header|Dyalect}}==
<
let x = name[..1].Upper() + name[1..].Lower();
let y = "AEIOU".IndexOf(x[0]) > -1 ? x.Lower() : x[1..]
Line 763:
for x in seq {
printVerse(x)
}</
{{out}}
Line 799:
=={{header|F_Sharp|F#}}==
===The function===
<
// The Name Game. Nigel Galloway: March 28th., 2018
let fN g =
Line 809:
|'m' -> fG ("b"+g.[1..]) ("f"+g.[1..]) (g.[1..])
|_ -> fG ("b"+g.[1..]) ("f"+g.[1..]) ("m"+g.[1..])
</syntaxhighlight>
===The Task===
<
fN "Nigel"
</syntaxhighlight>
{{out}}
<pre>
Line 821:
Nigel!
</pre>
<
fN "Earl"
</syntaxhighlight>
{{out}}
<pre>
Line 831:
Earl!
</pre>
<
fN "Billy"
</syntaxhighlight>
{{out}}
<pre>
Line 841:
Billy!
</pre>
<
fN "Fred"
</syntaxhighlight>
{{out}}
<pre>
Line 851:
Fred!
</pre>
<
fN "Mum"
</syntaxhighlight>
{{out}}
<pre>
Line 865:
{{trans|Kotlin}}
{{works with|Factor|0.98}}
<
pair-rocket qw sequences ;
IN: rosetta-code.name-game
Line 888:
${Name}!I] nl nl ;
qw{ Gary Earl Billy Felix Milton Steve } [ name-game ] each</
{{out}}
<pre>
Line 923:
=={{header|FreeBASIC}}==
<
Dim As String x = Lcase(nombre)
x = Ucase(Mid(x,1,1)) + (Mid(x,2,Len(x)-1))
Line 953:
TheGameName(listanombres(i))
Next i
Sleep</
{{out}}
<pre>
Line 997:
=={{header|Go}}==
{{trans|Kotlin}}
<
import (
Line 1,032:
printVerse(name)
}
}</
{{out}}
Line 1,068:
=={{header|Haskell}}==
<syntaxhighlight lang="haskell">
-- The Name Game, Ethan Riley, 22nd May 2018
import Data.Char
Line 1,110:
main =
mapM_ (putStrLn . theNameGame) ["Gary", "Earl", "Billy", "Felix", "Mike", "Steve"]
</syntaxhighlight>
{{out}}
<pre>
Line 1,146:
=={{header|J}}==
Substitutions must conform to the region they replace. Cannot directly substitute 'Gary' where 'X' occurs in the template. Work instead with boxes, then at the end raze them to recover the verse.
<syntaxhighlight lang="j">
T=:TEMPLATE=: noun define
(X), (X), bo-b(Y)
Line 1,168:
; XBox
)
</syntaxhighlight>
<pre>
nameGame&> ;:'Gary Earl Billy Felix Mary'
Line 1,199:
=={{header|Java}}==
{{trans|Kotlin}}
<
public class NameGame {
Line 1,233:
Stream.of("Gary", "Earl", "Billy", "Felix", "Mary", "Steve").forEach(NameGame::printVerse);
}
}</
{{out}}
<pre>Gary, Gary, bo-bary
Line 1,266:
=={{header|JavaScript}}==
<
// normalize name
Line 1,312:
'Gary Earl Billy Felix Mary Christine Brian Yvonne Yannick'.split(' ');
for (let i = 0; i < names.length; i++)
document.write(singNameGame(names[i]));</
{{out}}<pre>
Gary, Gary, bo-bary
Line 1,361:
=={{header|Julia}}==
<
function printverse(name::AbstractString)
Line 1,378:
end
foreach(TheNameGame.printverse, ("gARY", "Earl", "Billy", "Felix", "Mary", "sHIRley"))</
{{out}}
Line 1,412:
=={{header|Kotlin}}==
<
fun printVerse(name: String) {
Line 1,434:
fun main(args: Array<String>) {
listOf("Gary", "Earl", "Billy", "Felix", "Mary", "Steve").forEach { printVerse(it) }
}</
{{out}}
Line 1,471:
=={{header|Lua}}==
{{trans|C#}}
<
local sb = string.lower(name)
sb = sb:gsub("^%l", string.upper)
Line 1,508:
for _,name in pairs(nameList) do
printVerse(name)
end</
{{out}}
<pre>Gary, Gary, bo-bary
Line 1,545:
song$=format$("\r\n{0}, {0}, bo-{2}{1}\r\nBanana-fana fo-{3}{1}\r\nFee-fi-mo-{4}{1}\r\n{0}!\r\n")
<syntaxhighlight lang="m2000 interpreter">
Module The.Name.Game {
Flush
Line 1,572:
}
The.Name.Game
</syntaxhighlight>
{{out}}
Line 1,600:
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<
NameGame[n_] := Module[{y, b, f, m},
If[StringStartsQ[ToLowerCase[n], "a" | "e" | "i" | "u" | "o"],
Line 1,622:
NameGame["Felix"]
NameGame["Mary"]
NameGame["Steve"]</
{{out}}
<pre>Gary, Gary, bo-bary
Line 1,657:
{{works with|min|0.19.3}}
{{trans|Factor}}
<
(
Line 1,675:
) :name-game
("Gary" "Earl" "Billy" "Felix" "Milton" "Steve") 'name-game foreach</
{{out}}
<pre>
Line 1,711:
=={{header|MIPS Assembly}}==
The cartridge header and print routines were omitted so that the reader can focus on the logic.
<
la $s0,theName
jal PrintString_NameGame
Line 1,860:
.ascii "?!"
.byte 0
.align 4</
{{out}}
[https://ibb.co/V9GcTFV Screenshot of emulator]
Line 1,879:
=={{header|Modula-2}}==
<
FROM Strings IMPORT Concat;
FROM ExStrings IMPORT Lowercase;
Line 1,944:
ReadChar;
END NameGame.</
=={{header|Nanoquery}}==
{{trans|Python}}
<
l = {"b", "f", "m"}
s = n.substring(1)
Line 1,967:
for n in names
print_verse(n)
end</
=={{header|Nim}}==
<
const
Line 1,997:
for name in ["Gary", "Earl", "Billy", "Felix", "Mary"]:
echo name.lyrics()
echo()</
{{out}}
Line 2,027:
=={{header|Perl}}==
{{trans|Lua}}
<
$x = ucfirst lc shift;
$x0 = substr $x, 0, 1;
Line 2,040:
}
printVerse($_) for <Gary Earl Billy Felix Mary Steve>;</
{{out}}
<pre>Gary, Gary, bo-bary
Line 2,074:
=={{header|Phix}}==
{{trans|Go}}
<!--<
<span style="color: #008080;">constant</span> <span style="color: #000000;">fmt</span> <span style="color: #0000FF;">=</span> <span style="color: #008000;">"""
%s, %s, bo-%s
Line 2,099:
<span style="color: #008080;">constant</span> <span style="color: #000000;">tests</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #008000;">"gARY"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Earl"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Billy"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Felix"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"Mary"</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"SHIRley"</span><span style="color: #0000FF;">}</span>
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tests</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span> <span style="color: #000000;">printVerse</span><span style="color: #0000FF;">(</span><span style="color: #000000;">tests</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">])</span> <span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<!--</
{{out}}
<pre>
Line 2,135:
=={{header|Picat}}==
{{works with|Picat}}
<syntaxhighlight lang="picat">
print_name_game(Name), Name = [V|Rest], membchk(V, ['A', 'E', 'I', 'O', 'U']) =>
L = to_lowercase(V),
Line 2,167:
print_name_game(Name)
end.
</syntaxhighlight>
{{out}}
<pre>
Line 2,199:
=={{header|PowerShell}}==
{{trans|Chris}}
<syntaxhighlight lang="powershell">
## Clear Host from old Ouput
Clear-Host
Line 2,253:
}
Write-Host "$Name"
</syntaxhighlight>
=={{header|Prolog}}==
<
map_name1(C, Cs, Fc, [Fc,C|Cs]) :- member(C, ['a','e','i','o','u']).
map_name1(C, Cs, Fc, [Fc|Cs]) :-
Line 2,281:
test :-
maplist(song, ["Gary", "Earl", "Billy", "Felix", "Mary"]).</
{{out}}
<pre>
Line 2,314:
=={{header|Python}}==
<
l = ['b', 'f', 'm']
s = n[1:]
Line 2,325:
# Assume that the names are in title-case and they're more than one character long
for n in ['Gary', 'Earl', 'Billy', 'Felix', 'Mary']:
print_verse(n)</
=={{header|q}}==
===String search and replace===
<
V:raze 1 lower\"AEIOUY"; / vowels
tn:lower((Name in V)?1b) _ Name; / truncated Name
Line 2,335:
s:"$1, $1, bo-b$2\nBanana-fana-fo-f$2\nFee-fimo-m$2\n$1!\n\n";
(ssr/).(s;("$1";"$2";s3 0);(Name;tn;s3 1)) }
</syntaxhighlight>
===Amend a list of strings===
<
pfx:Name,", ",Name,", "; / prefix
n:lower Name;
Line 2,346:
// test
1 "\n"sv raze game_ssr each ("Gary";"Earl";"Felix";"Stephen";"Ryan";"Jo");
</syntaxhighlight>
{{out}}
<pre>Gary, Gary, bo-bary
Line 2,386:
Meh. The rules leave out some corner cases (see Steve) but what the heck, technically correct is the best kind of correct.
<syntaxhighlight lang="raku"
my $fl = $name.lc.substr(0,1);
$fl ~~ /<[aeiou]>/
Line 2,404:
}
say .&name-game for <Gary Earl Billy Felix Mike Steve></
{{out}}
<pre>Gary, Gary, bo-bary
Line 2,440:
Extra code was added to the REXX program to capitalize the name (and lowercase all characters in the name except the 1<sup>st</sup> character).
<br>Also, dual names are supported (like Mary Ann).
<
parse arg $ /*obtain optional argument(s) from C.L.*/
if $='' then $="gAry, eARL, billy, FeLix, MarY" /*Not specified? Then use the default.*/
Line 2,472:
end /*select*/
say z'!'; say
return</
{{out|output|text= when using the default (internal) names:}}
<pre>
Line 2,505:
More idiomatic Ruby while not being object-oriented.
Also, like the Commodore Basic version, we handle consonants at the start of the name using a Regular Expression so we can handle appropriately names like Steve or Chris. Byron is an interesting edge-case because has a "y" and also starts with "b".
<
def print_verse(name)
Line 2,544:
end
</syntaxhighlight>
{{out}}
<pre>Gary, Gary, bo-bary
Line 2,589:
=={{header|Scala}}==
<
private def printVerse(name: String): Unit = {
val x = name.toLowerCase.capitalize
Line 2,609:
Stream("gAry", "earl", "Billy", "Felix", "Mary", "Steve").foreach(printVerse)
}</
See it running in your browser by [https://scastie.scala-lang.org/UilFJ0zFSJu4Qk2xaw2r4A Scastie (JVM)].
Line 2,616:
This implements the required rules and also attempts to handle names that start with consonant clusters.
<
namegame() {
local name=$1 b=b f=f m=m
Line 2,645:
namegame "$name"
echo
done</
{{Out}}
Line 2,681:
=={{header|VBA}}==
<
Sub Main()
Line 2,712:
Next
TheGameName = t
End Function</
{{out}}
<pre>Gary, Gary, bo-bary
Line 2,751:
=={{header|Visual Basic .NET}}==
{{trans|C#}}
<
Imports System.Text
Line 2,790:
End Sub
End Module</
{{out}}
<pre>Gary, Gary, bo-bary
Line 2,823:
=={{header|Vlang}}==
<
list := ['Gary', 'Earl', 'Billy', 'Felix', 'Mary']
for name in list {verse(name)}
Line 2,846:
println('Fee-fi-mo-$m')
println('$x!\n')
}</
{{out}}
Line 2,879:
{{trans|Kotlin}}
{{libheader|Wren-str}}
<
var printVerse = Fn.new { |name|
Line 2,901:
}
["Gary", "Earl", "Billy", "Felix", "Mary", "Steve"].each { |name| printVerse.call(name) }</
{{out}}
Line 2,938:
=={{header|Z80 Assembly}}==
{{trans|MIPS Assembly}}
<
read "\SrcCPC\winape_macros.asm"
read "\SrcCPC\MemoryMap.asm"
Line 3,046:
db "fee-fi-mo-%",13,10
db "?!",13,10,13,10
db 0</
{{out}}
<pre>gary, gary, bo-bary
Line 3,065:
=={{header|zkl}}==
{{trans|Kotlin}}
<
z,x := name[0].toLower(), z.toUpper() + name[1,*].toLower();
y:=( if("aeiou".holds(z)) name.toLower() else x[1,*] );
Line 3,073:
println("Fee-fi-mo-",m);
println(x,"!\n");
}</
<
{{out}}
<pre style="height:35ex">
|