基于胶带可以修复任何东西。的问题,这太宽泛了,有着非常相似的规则。只是这一次的目标非常具体:
挑战
你的任务是制作一个显示hello mom的程序--从来没有写过一行代码。
您只能在StackOverflow的问答中使用已经为您编写的代码。你能做的就是用最好的胶带把它粘在一起。当然,非常重要的是,我们要提供适当的归属,这样我们的权利就不会终止。
scanner.nextInt()更改为scanner.nextLine()并声称您正在更改方法名称来更改方法调用。更改必须在对同一实体的定义或引用中进行。如果变量、函数或方法将再次重命名,则解决方案仍然有效,因此将包含hello mom的代码重命名为变量名不算。你可以适当地调整压痕。您可以假设加载了适当的模块,代码段才能工作。(例如,用于Java和Python的import语句,用于C#和C++的using语句,以及它们在所有语言中的等效语句)如果代码片段包括您的imports,您可以将它们移到代码的顶部。如果语言要求代码在某种方法体中执行(例如,public static void main(String[] args) for Java,static int Main(string[] args) for C#,等等),则可以将代码包装在适当的方法中。但主要方法的内容必须保持不变。我将接受在母亲节结束时( UTC-11时区午夜)投票最多的提案,但以后提交的提案仍然可以获得选票。
发布于 2014-05-09 18:30:43
从以下几个方面开始:
https://stackoverflow.com/a/19509316/1768232
String myStr = "hello";
String myStr1 = "hello";https://stackoverflow.com/a/8341513/1768232
String[] history = new String[] { "hey", "you", "Mom" };https://stackoverflow.com/a/23300004/1768232
String editednames = titleCase(name);https://stackoverflow.com/a/20698093/1768232
myString = myString.toLowerCase();https://stackoverflow.com/a/19393222/1768232
System.out.println(Name + " " + Income);https://stackoverflow.com/a/1181979/1768232
public static <T> T last(T[] array) {
return array[array.length - 1];
}按照规则#2d中允许的那样添加所需的class和public static void main(String[] args){ } (而不是围绕静态方法),并在6个代码段中的3个中更改一些变量/方法名称:
name -> historyeditednames -> myStringName -> myStrIncome -> myStringlast -> titleCase由此产生的方案:
public class DuctTape {
public static void main(String[] args) {
// https://stackoverflow.com/a/19509316/1768232
String myStr = "hello";
String myStr1 = "hello";
// https://stackoverflow.com/a/8341513/1768232
String[] history = new String[] { "hey", "you", "Mom" };
// https://stackoverflow.com/a/23300004/1768232
String myString = titleCase(history);
// https://stackoverflow.com/a/20698093/1768232
myString = myString.toLowerCase();
// https://stackoverflow.com/a/19393222/1768232
System.out.println(myStr + " " + myString);
}
// https://stackoverflow.com/a/1181979/1768232
public static <T> T titleCase(T[] array) {
return array[array.length - 1];
}
}输出:
hello mom发布于 2014-05-10 13:57:31
可能是疯狂的、迂回的和复杂的方式来获得(确切的)结果-只有变量重命名和没有任何字面上的“妈妈”在任何代码中。
读一读“如果你从一篇文章中获取一个代码块,你就把整件事都拿走了”的规则很可能没有帮助--但却让它变得更有趣。
using System;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
public class Program
{
void Main()
{
// Step 1
var n = 3;
var helloAndGoodbye = "12345678900"
.Select((c, i) => new { letter = c, group = i / n })
.GroupBy(l => l.group, l => l.letter)
.Select(g => string.Join("", g))
.ToList();
// Step 2
string place = "world";
string greet = String.Format("Hello {0}!", place);
// Step 3
byte[] b1 = System.Text.Encoding.UTF8.GetBytes (greet);
byte[] b2 = System.Text.Encoding.ASCII.GetBytes (greet);
// Step 4
string encryptionKey = "test";
var md5 = MD5.Create();
var keyBytes = Encoding.UTF8.GetBytes(encryptionKey);
byte[] encryptionKeyBytes = md5.ComputeHash(keyBytes);
// Step 5
string strName = md5.GetType().Name;
if(strName == "Person")
{
//My Code
}
// Step 6
string HashAlgorithm = new string(strName.Take(n).ToArray());
// Step 7
int previousYear = DateTime.Now.AddYears(-1).Year;
// Step 8
string myString = previousYear.ToString();
// Step 9
string totallyRandomString = new string(myString.Take(n).ToArray());
// Step 10
int myInt = System.Convert.ToInt32(totallyRandomString);
// Step 11
int x = myInt << 1 + 1;
// Step 12
PasswordDeriveBytes DerivedPassword =
new PasswordDeriveBytes(place, b1, HashAlgorithm, x);
byte[] KeyBytes = DerivedPassword.GetBytes(32);
// Step 13
string base64 = Convert.ToBase64String(KeyBytes);
byte[] bytes = Convert.FromBase64String(base64);
// Step 14
var split = base64.Split('/');
var last = split[split.Length -1];
var prev = split[split.Length -2];
// Step 15
string truncatedToNLength = new string(last.Take(n).ToArray());
// Step 16
Regex rgx = new Regex("[^a-zA-Z0-9 -]");
greet = rgx.Replace(greet, "");
// Step 17
var newString = greet.Replace(place.ToString(), truncatedToNLength);
// Step 18
var searchStr = newString.ToLower();
searchStr = searchStr.Trim();
// Step 19
Console.WriteLine(searchStr);
}
}http://dotnetfiddle.net/PbjhPn
http://dotnetfiddle.net/bg20wb (删除代码块中的冗余行)
基本上,我们得到了“你好世界!”从一个简单的字符串格式。现在我们需要“妈妈”来代替它。为此,我们使用Base64编码的结果运行PBKDF1的804次迭代,使用以"world“作为密码和"Hello!”的MD5!像盐一样。生成一个字符串“ciSf5cCls1l/MoM.”。我们提取"MoM“并将其用作"world”的替代物。然后我们把绳子清理干净。
我们怎么去804?前一年缩短为三个字符(= "201"),然后乘以4。
他说:我们从一些遵循规则的过度杀戮开始。整数3在这个程序中是一个非常重要的常数。这里,我们将这个整数赋值给n。我们必须从源中包含整个块。它可能是多余的,但只要我们稍后重新命名我们需要的split变量,它就会编译得很好。来源
替换变量名:
split > helloAndGoodbye设置启动字符串("Hello!“)。来源
这是一个非常私人的信息给我们的妈妈。所以我们显然需要一些密码技术来处理那些NSA类型。为此,我们需要一些参数,我们现在就准备。
3:转换greet ("Hello!“)到用于盐渍的字节数组。来源
myString > greet4:虽然我们使用的是加密技术,但实际上并不需要实例化MD5类。但是,我们确实需要为我们的参数之一分配字符串"MD5“,以便更深入地使用--这在可用代码中并不容易找到。所以我们再来一次..。“捷径”..。同样,整个代码块按照规则包括在内,尽管我们只需要第二行。来源
5:现在我们需要md5变量(MD5CryptoServiceProvider)类型的名称。if是另一个冗余。来源
entity > md56:得到前3(噢,这是我们的常数!)类型名称的字符。来源
s > strName
truncatedToNLength > HashAlgorithm7:代码控制:使用DateTime.Now将意味着这将只工作到2019年。为了更好地证明未来,我们使用了前一年。然后它将工作到2020年;-)来源
8:将我们的previousYear转换为字符串。来源
myInt > previousYear9:嘿,代码重用!;-)得到前3(我们的常数!)年度人物。来源
s > myString
truncatedToNLength > totallyRandomString10: Aaaaaaaand..。将结果转换为整数。来源
myString > totallyRandomString埃里克·利珀特把每一个答案都做得更好。以迂回的方式乘以4。来源
y > myInt12:通过place (密码)和greet (salt)发送PBKDF1,使用MD5和x (现在是201*4 = 804)迭代。来源
Password > place
SaltValueBytes > b1
PasswordIterations > x13:乔恩·斯基特( Jon )也能给出更好的答案。将派生密码转换为基数64。我们抛出bytes数组。来源
bytes (first occurrence) > KeyBytes14:多么疯狂的随机事件啊!我们现在有一个base64,其中包含"MoM“。很方便,就在"MoM“前面是一个'/‘。因此,将字符串拆分为分隔符:来源
filePath > base6415:嘿,我们最喜欢的代码重用磁带!得到前3(常数!)last的信件。来源
s > last16:删除"!“。来源
str > greet17: MoM是我们的世界--所以让字符串反映出来(将" world“替换为"MoM")。来源
someTestString > greet
someID > place
sessionID > truncatedToNLength18:最后,改为小写。修剪好的尺寸(可能是因为它是管道胶带块的一部分)。来源
wordToSearchReplacemntsFor > newString19:输出到控制台。来源
_surface > searchStrHttpStatusCode.Created (201)找到一些有用的代码作为输入--带有一个类似于“我们已经创建了'Hello!‘字符串的”巨魔借口“,所以这里最好的做法是使用' created’状态代码”。不幸的是,我从未发现HttpStatusCode枚举的用法没有引入对大多数ASP.NET WebAPI框架的依赖。place的分配实际上在源代码中的另一个块中--所以我可以简单地将派生的“妈妈”分配给place,而不是使用"world“,然后再替换它。啊,好吧。发布于 2014-05-09 13:57:56
import java.util.*;
public class HelloMom {
public static void main(String[] args) {
Hashtable<String, String> ht = new Hashtable<String, String>();
ht.put("Answer", "42");
ht.put("Hello", "World"); // First value association for "Hello" key.
ht.put("Hello", "Mom"); // Second value association for "Hello" key.
for (Map.Entry<String, String> e : ht.entrySet()) {
System.out.println(e);
}
}
}Answer=42
Hello=Mom里面有些烦人,但这是我所能做的最好的事。
https://codegolf.stackexchange.com/questions/26861
复制相似问题