Tujuan golf kode ini adalah membuat kode yang memungkinkan pengguna memasukkan string ASCII (hanya berisi karakter ASCII yang dapat dicetak ), dan program Anda menghasilkan varian huruf kecil dari string ini.
Penting: Anda TIDAK diizinkan menggunakan fungsi bawaan yang mengubah string (atau hanya satu karakter) menjadi huruf kecil (seperti ToLower()
dalam .NET, strtolower()
dalam PHP, ...)! Anda diizinkan menggunakan semua fungsi bawaan lainnya.
Catatan penting lainnya: String input tidak hanya berisi karakter huruf besar. String input adalah campuran karakter huruf besar, huruf kecil, angka dan karakter ASCII lainnya yang dapat dicetak .
Semoga berhasil!
code-golf
printable-ascii
ProgramFOX
sumber
sumber
s/./\L\0/g
.\L
sudah ada di dalam?Jawaban:
Shell - 10
Terjemahan dari solusi Perl @ Gowtham menggunakan
/bin/tr
.Contoh dijalankan:
sumber
-p
bendera dihitung sebagai satu). Saya setuju, sepertinya itu lebih pantas untuk diterima ..Python 2.7 - 30 (dengan penyalahgunaan aturan yang mengerikan dan tidak menyesal)
Seperti yang ditunjukkan oleh hasil edit anonim, Anda dapat melakukannya
2726 dalam Python 3 :Saya terang-terangan menyalahgunakan aturan di sini, tapi ...
Ini mengambil string dan menutupinya ke huruf besar . Kemudian dalam pemanggilan metode yang sangat tidak terkait, itu membalik case dari string - sehingga setiap huruf kecil menjadi huruf besar ... dan menukar setiap huruf besar menjadi huruf kecil .
sumber
Perl -
1110 karakter.y///
sama dengantr///
!Beraksi:
sumber
-p
opsi dihitung sebagai 1.-
danp
:)-e
(perl -e
->perl -pe
), 3 jika Anda menggunakan skrip (perl
->perl -p
).Befunge-98 -
26 22 2119Bergantung pada kenyataan bahwa
(c-39)/26
ini1
hanya untuk kode karakter dari karakter ASCII huruf besar (dengan asumsi pembagian integer). Untuk setiap karakterc
, cetakc + (((c-39)/26)==1)*' '
.Sesi sampel:
sumber
Python 3, 58
sumber
map(ord,input())
bit bekerja.map
menerapkan fungsi (dalam hal ini,ord
) ke interable dan mengembalikan iterable. Ini seperti bentuk yang lebih pendek(ord(x) for x in input())
.for c in input():print([c,(chr(ord(c)+32))]['@'<c<'['],end='')
. Saya mencoba beberapa denganmap(ord,input())
trik, tetapi melewatkan nilai kebenaran dengan mengalikan 32 dan menambahkannya ke trik kode karakter. Sangat bagus.Ruby, 18 karakter
Tidak ada yang benar-benar menarik.
(dijalankan di IRB)
Hanya untuk bersenang-senang: versi yang membingungkan:
Jalankan seperti ini:
Keluaran
sumber
J - 30
J dibaca kanan-ke-kiri, jadi untuk memecah ini:
1!:1]1
&.(a.&i.)
1=I.
.]+32* ...
Jelas implementasi khusus ini hanya mempertimbangkan ASCII; tetapi pendekatan tersebut dapat diperluas setidaknya ke pesawat multibahasa dasar di Unicode.
sumber
'@Z'(]+32*1=I.)&.(a.&i.)1!:1]1
harus melakukannya)u:(a.i.x)+32*1='@Z'I.x=.1!:1]1
, yang cocok dengan panjang Anda tetapi jauh lebih menarik (karena tidak menggunakan 'bawah'). Omong-omong, saya tidak tahu tentang diadI.
, jadi terima kasih telah menggunakan itu. :-)(32(23)b.])&.(3&u:)
, harus lebih pendek 5 byte.C
64 63 5955 karaktersumber
int
dan,c>=0
. Mereka tidak perlu di sini.~(c=getchar())
2.c-64u<27
Golfscript - 17
Program:
Penjelasan:
{}%
memetakan kode di dalam ke setiap karakter dalam string...
menyalin bagian atas tumpukan (karakter) dua kali.64>
1 jika kode karakter lebih besar dari 64, atau 0.\
menukar kedua item di tumpukan (mendapatkan salinan kedua surat itu, dan menyimpan hasilnya64>
di posisi dua).91<
memeriksa untuk melihat apakah kode karakter kurang dari 91. Mirip dengan langkah 3.*
mengalikan hasil dari langkah 3 dan 5 bersamaan. Hanya sama dengan 1, jika kedua langkah itu benar.32*
gandakan hasil langkah 6 dengan 32. Akan menjadi 32 jika langkah 6 adalah 1, jika tidak 0.+
tambahkan hasilnya (32 atau 0) ke kode karakter.Contoh output:
sumber
Perl: 24 karakter
Contoh dijalankan:
sumber
chr ord
? Saya cukup yakin Anda tidak akan belajar apa pun dalam membaca jawaban saya ;-)-p
parameter baris perintah, bukan baris baru.Python (33)
Jika ragu, gunakan shell.
Sayangnya, ini masih lebih lama dari solusi Lego.
sumber
tr
perintah (yang melakukan hal yang benar) di jalur shell yang dipanggil, saya kira.DELPHI
sumber
JavaScript -
109104 (ES6: 95)Terima kasih beberapa untuk versi yang diperbaiki.
Berikut ini berfungsi jika browser mendukung ekspresi fungsi ES6:
sumber
undefined
dan kemudianc.charCodeAt()
gagal karena tidak terdefinisicharCodeAt
. Contoh kerja 105 karakter:a=prompt();for(b=[i=0];c=a.charCodeAt(i);)b[i++]=String.fromCharCode(c|(c>64&&c<91)*32);alert(b.join(''))
and
bukannya yang logis ... bagus!L=s=>[String.fromCharCode(c.charCodeAt()|(c>"@"&c<"[")*32)for(c of s)].join('')
. Penggunaan:L('SoMeTeXt')
for..of
terlepas.Perl 18
Sesuatu seperti:
dan
Untuk @FireFly :
tidak.
Lebih umum: 18 karakter:
Ini tidak akan mengubah apa pun dalam status:
Semua berfungsi dengan baik, tetapi keuntungan dari mengubah
|
(atau) oleh^
(xor) adalah bahwa sintaks yang sama dapat digunakan untuktoLower
,toUpper
atauswapCase
:ke Atas:
dan swapCase (18 + 1 = 19 karakter) :
sumber
-p
sorry @manatwork@
to backtick and[\]^_
to{|}~DEL
? And therein lies the tricky part..$&
have to match[A-Z]
.javascript 80
(76 if you remove
"X"
)with
prompt
andalert
- 92fiddle
thanks to @FireFly @some @C5H8NNaO4 and @minitech
sumber
replace
withfunction($){return ...}
, no? By the way, the first param to the replacement function is the matched string, so you could drop the parens in the regex.prompt
andalert
for I/O in JS./g
flag for this to work properly.R
71 characters:
83 characters:
sumber
86
characters - newlines count as 2 characters. (string-functions.com/length.aspx);
so no they count just for one character. It could be written:a=as.integer(charToRaw(scan(,"")));b=a%in%(65:90);a[b]=a[b]+32;rawToChar(as.raw(a))
Q, 18
.....
sumber
Q (16)
.......
sumber
PHP (42)
Run from the command line:
-R
and the single quotes are not counted.sumber
str_ireplace
does case insensitive search, which is stretching the rules, if not breaking them.PowerShell:
696564I've tried a half-dozen ways to get Replace to work the way I want it to without using the long
[regex]::Replace
syntax, but I haven't had any luck. If anyone else has an idea of what might work, please do suggest it.Golfed code:
Explanation:
(read-host)
gets the user input.[regex]::Replace(
...)
tells PowerShell to use RegEx matching to perform replacement operations on a string."[A-Z]"
matches all uppercase letters.{
...}
tells PowerShell to use a script to determine the replacement value.[char]"$args"
takes the current match and types it as an ASCII character.32+
converts the character to an integer, representing the ASCII code, and increases the value by 32 - which would match ASCII code of the corresponding lowercase letter.[char](
...)
takes the resulting value and converts it back to an ASCII character.Demo of original:
(Current version tested - screenshot not yet posted.)
sumber
[regex]::Replace
, but you can save 4 chars by changing[int]
to+
{[char](32+[char]"$args")}
, which removes the need to explicitly cast to int and shaves off one more characterk2, 15 bytes
I am super late to this one, but I found this cool anyway.
Also:
Pyth, 10 bytes
Doesn't really count because Pyth was created after this was posted. Still cool.
sumber
05AB1E, 3 bytes
Port of @user8777 Python 3 answer.
Try it online.
Explanation:
But without any case-altering builtins:
05AB1E,
1211 bytes-1 byte thanks to @Emigna.
Try it online.
Explanation:
sumber
ÇIS.u32*+çJ
saves a byte on your 12-byte version..u32*+
approach like this:εÇy.u32*+ç]J
, but unfortunatelyç
wraps the characters in a list, so an additionalJ
or ` was required after theç
..Javascript, 105
Actually ther was no output form specified, so run it in console Yea, JavaScript really is verbose with charcode <-> string
sumber
c.charCodeAt()
-- it defaults to0
if an index is omitted. Also, breaks on '@' I believe (it gets "lowercased" into backtick)Ruby: 66
sumber
C# - 108
About 70 for just the method body.
Add 5 chars to include a LF/CR in the output:
A LINQ version would be shorter:
(103) .. except that it requires
using System.Linq;
(total: 121).sumber
Haskell - 58
sumber
Python 3 - 70
Updated for OP's changes.
I'm a Python newbie, so any critique is welcome.
sumber
Perl, 9 + 1 (for -p flag) = 10
\L
was specifically asked about and allowed, because even though it's a built-in, it's not a function.sumber
Powershell,
5349 bytes-4 bytes thanks @AdmBorkBork
Test script:
Output:
sumber
¯\_(ツ)_/¯
8086 machine code, 14 bytes
Assembled:
Unassembled listing:
Implemented as a
MACRO
(essentially a function). Input string inSI
, length inCX
. Output string inDI
.Output from PC DOS test program:
Download and test TOLOW.COM example program.
sumber
AC 3C 41
, etc. I'll add the assembled hex byte code to the top for clarity. codegolf.meta.stackexchange.com/a/12340/84624