Taśma klejąca może naprawić Dzień Matki


54

Na podstawie taśmy Duct można naprawić dowolne pytanie, które było zbyt szerokie, z bardzo podobnymi zasadami. Tylko tym razem cel jest bardzo konkretny:

Wyzwanie

Twoim zadaniem jest stworzenie programu, który wyświetla hello mom- bez pisania ani jednego wiersza kodu.

Możesz używać tylko kodu, który jest już dla Ciebie napisany, zarówno w pytaniach, jak i odpowiedziach StackOverflow. Wszystko, co możesz zrobić, to taśma klejąca, wszystko razem najlepiej, jak możesz. I oczywiście bardzo ważne jest, abyśmy zapewniali odpowiednią atrybucję, abyśmy nie utracili naszych praw.


Zasady

  1. Musisz dołączyć linki do pytań / odpowiedzi użytych w odpowiedzi.
  2. Nie możesz modyfikować znalezionego kodu, z następującymi wyjątkami:

    za. Możesz zmieniać nazwy zmiennych, funkcji i metod. (To nie znaczy, można zmienić metodę do wywołania , zmieniając, powiedzmy scanner.nextInt()do scanner.nextLine()twierdząc, że jesteś zmieniając nazwę metody. Zmiana musi być w definicji lub odniesienie do tego samego podmiotu.). Rozwiązanie powinno nadal działać, jeśli zmieniono by nazwę zmiennej, funkcji lub metody, więc zmiana nazwy kodu na hello momnazwę zmiennej nie ma znaczenia.

    b. Możesz odpowiednio dostosować wcięcie.

    do. Możesz założyć, że zostały załadowane odpowiednie moduły do ​​działania fragmentów kodu. (np. importinstrukcje dla Java i Python, usinginstrukcje dla C # i C ++ oraz ich odpowiedniki we wszystkich językach) Jeśli fragment kodu zawiera litery imports, możesz przenieść je na początek kodu.

    re. Jeśli język wymaga, aby kod był w jakiejś formie metody do wykonania (np. public static void main(String[] args)Dla Javy, static int Main(string[] args)dla C # itd.), Możesz owinąć swój kod odpowiednią metodą. Ale zawartość tej głównej metody musi pozostać niezmodyfikowana.

  3. Musisz podać jawną listę wykonanych zmian nazw zmiennych / metod / funkcji / klas.

  4. Nie możesz wziąć urywków fragmentów (co oznacza, że ​​jeśli weźmiesz blok kodu z postu, weźmiesz całość)
  5. Podaj krótki opis działania kodu dla osób, które nie są intymne z językiem, którego używasz.
  6. Musisz użyć fragmentów opublikowanych przed rozpoczęciem tego wyzwania.
  7. Konkurs popularności, więc najwięcej entuzjastów wygrywa!

Ostateczny termin

Zaakceptuję zgłoszenie, które ma najwięcej głosów pod koniec dnia matki (północ strefy czasowej UTC-11), ale późniejsze zgłoszenia wciąż mogą uzyskać głosy.


1
@iamkrillin To sprawiłoby, że przeniesienie dowolnego przykładu ze świata hello do kodu hello mom byłoby dość proste. Zwróć także uwagę na ostatni wiersz reguły o zmianie nazw zmiennych.
Dennis Jaheruddin

23
7. Musisz użyć fragmentów opublikowanych przed tym wyzwaniem. (Mógłbym odpowiedzieć na kilka pytań związanych z łańcuchem znaków z kodem, który by to zrobił)
Geobits

1
Czy możesz wstawić kod do innego fragmentu?
durron597


1
@JeffGohlke lub an mor an dosal o. Lub fragment, który konwertuje punkty kodowe na znaki i fragmenty, które pozwalają obliczyć odpowiedni punkt kodowy. Ograniczenie jest dokładnie tym , co pobudza kreatywność. O tym wspomniałem na temat własnego wyzwania i dlaczego zasugerowałem ograniczenie zakresu (a następnie dlaczego został zamknięty).
Martin Ender

Odpowiedzi:


60

Brainfuck

Boże, dlaczego to sobie zrobiłem?

Właściwie można znaleźć każdy symbol BF jako fragment kodu w jakiejś odpowiedzi. Interesującym elementem było poskładanie fragmentów kodu innych osób, z których każdy reprezentował blok instrukcji BF. Niestety, w zasadzie nie ma tam żadnych nieporównywalnych symboli [i ]symboli, więc musiałem trochę oszukać dla nich, i musiałem uzyskać strasznie dużo kilometrów z funky fragmentu Haskella, który miał sporo plusów. Prawdopodobnie są tam inni. Poza tym oto kod Frankensteined:

byte x = 1;
byte y = 2;
byte z = x + y;   // ERROR: Cannot implicitly convert type 'int' to 'byte'
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
[
int a = (b > 10) ? some_value                 
                 : another_value;
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
int a = (b > 10) ? c : d;
byte x = 1;
byte y = 2;
byte z = x + y;   // ERROR: Cannot implicitly convert type 'int' to 'byte'
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
?"<<-"
]
exec >{space}> (command)
byte z = (int) x + (int) y;
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
find . -type f -print -exec cat {} \;
git reset .
byte x = 1;
byte y = 2;
byte z = x + y;   // ERROR: Cannot implicitly convert type 'int' to 'byte'
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
System.out.print("B");
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
fatal: Failed to resolve 'HEAD' as a valid ref.
while read p; do 
echo $p
done < $filename
static HMODULE hMod = NULL;
  static bool once = false;
  if (!once++)
    hMod = LoadLibrary("xxx");
 if (originalValue.length > size) {
static HMODULE hMod = NULL;
  static bool once = true;
  if (once--)
    hMod = LoadLibrary("xxx");
$ cd /usr/local/wherever
$ grep timmy accounts.txt
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub}
ls -ld $(find .)
git commit --amend -m "New commit message"
wget -q -O - $line 
git rebase --interactive $parent_of_flawed_commit
find . -type f -user 'user1' -maxdepth 1

A ponieważ moja matka jest Brytyjką, wyniki są dość proste hello mum

Bibliografia:

https://stackoverflow.com/questions/17845014/what-does-the-regex-mean

[i ]z przeprosinami

https://stackoverflow.com/a/21460161/2581168

find . -type f -print -exec cat {} \;

https://stackoverflow.com/questions/6161328/what-exactly-does-this-do-exec-command

exec >{space}> (command)

https://stackoverflow.com/questions/20130538/what-is-in-haskell

addop = do {symb "+"; return Op Add}  +++ do {symb "-"; return Op Sub} 

https://stackoverflow.com/questions/21947452/why-is-printing-b-dramatically-slower-than-printing

System.out.print("B");

https://stackoverflow.com/questions/941584/byte-byte-int-why

byte x = 1;
byte y = 2;
byte z = x + y;   // ERROR: Cannot implicitly convert type 'int' to 'byte'

https://stackoverflow.com/a/160295/2581168

int a = (b > 10) ? c : d;

I

int a = (b > 10) ? some_value                 
                 : another_value;

https://stackoverflow.com/questions/13273002/what-does-mean-in-r

?"<<-"

https://stackoverflow.com/questions/3450420/bool-operator-and

static HMODULE hMod = NULL;
static bool once = false;
if (!once++)
    hMod = LoadLibrary("xxx");

I

static HMODULE hMod = NULL;
static bool once = false;
if (!once--)
    hMod = LoadLibrary("xxx");

https://stackoverflow.com/questions/22776085/in-which-case-will-size-originalvalue-length-in-string-constructor-string

if (originalValue.length > size) {

https://stackoverflow.com/questions/3797795/does-mean-stdout-in-bash

wget -q -O - $line 

https://stackoverflow.com/questions/179123/how-do-i-edit-an-incorrect-commit-message-in-git/179147#179147

git commit --amend -m "New commit message"

I

git rebase --interactive $parent_of_flawed_commit

https://stackoverflow.com/questions/14763413/grep-ls-output-across-tabs/14763499#14763499

find . -type f -user 'user1' -maxdepth 1

https://stackoverflow.com/questions/945288/saving-current-directory-to-bash-history

$ cd /usr/local/wherever
$ grep timmy accounts.txt

https://stackoverflow.com/questions/348170/undo-git-add-before-commit/682343#682343

fatal: Failed to resolve 'HEAD' as a valid ref.

Komunikaty o błędach nie są kodem. Choć powinno to być łatwe do naprawienia
durron597

6
Prawdopodobnie powinna również istnieć decyzja, czy fragment kodu musi być w języku odpowiedzi. Ale dobrze zrobione, niezależnie
durron597

@ durron597, prawda, ale lubię mieć tam komunikat o błędzie. Jest git add .ten sam post, jeśli OP ma z tym problem.
ymbirtt

Mogą istnieć pewne odpowiedzi J, które mają niedopasowane []s, ale te często pochodzą z .s. stackoverflow.com/questions/21898628/…
11ıʇǝɥʇuʎs

1
To jest niesamowite. +1000
asteri

33

Jawa

Zacznij od tych:

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];
}

Dodaj wymagane classi public static void main(String[] args){ }dozwolone w Regule # 2d (nie wokół metody statycznej) i zmień niektóre nazwy zmiennych / metod dokładnie w 3 z 6 fragmentów:

  • Zmień name-> historyw trzecim fragmencie
  • Zmień editednames-> myStringw trzecim fragmencie
  • Zmień Name-> myStrw piątym fragmencie
  • Zmień Income-> myStringw piątym fragmencie
  • Zmień last-> titleCasew szóstym fragmencie

Wynikowy program:

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];
  }
}

Wynik:

hello mom

2
To wydaje się łamać zasady; 2a wskazuje, że nie można zmienić, która metoda jest wywoływana przez wywołanie metody, co zrobiono, zmieniając titleCase () na last ().
Billy Mailman

1
@BillyMailman, jeśli twoja interpretacja jest prawidłowa, NIGDY nie możesz używać definicji metody, chyba że q / a również gdzieś wywołuje tę metodę. Spróbuję edytować, jeśli istnieje wyrok OP
durron597

2
Właściwie @BillyMailman ma rację. Ale sposób, w jaki to zrobić przez zmianę nazwy metody , aby titleCase()raczej niż zmiana nazwy odnośnika zewnętrznego. W ten sposób powiążesz to ze sobą. Reguła 2a stanowi, że zmiana nazw metod / funkcji jest legalna.
asteri

1
@JeffGohlke Naprawiono
durron597

28

DO#

Prawdopodobnie szalony, rondo i zawiły sposób na uzyskanie (dokładnego) wyniku - tylko ze zmiennymi nazwami i bez żadnej dosłownej „mamy” w żadnym kodzie.

Czytanie zasady „jeśli weźmiesz blok kodu z posta, weźmiesz wszystko” bardzo dosłownie prawdopodobnie nie pomogło - ale sprawiło, że było fajniej.

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); 
    }
}

.NET Fiddle

http://dotnetfiddle.net/PbjhPn

http://dotnetfiddle.net/bg20wb (z usuniętymi redundantnymi liniami w blokach kodu)

Krótkie wyjaśnienie

Zasadniczo otrzymujemy „Hello world!” z prostego formatu ciągu. Teraz potrzebujemy „mamy”, aby go zastąpić. W tym celu wykorzystujemy zakodowany w Base64 wynik uruchomienia 804 iteracji PBKDF1 przy użyciu MD5 z „world” jako hasłem i „Hello world!” w postaci soli Daje to ciąg „ciSf5cCls1l / MoM ...”. Wydobywamy „MoM” i używamy go jako zamiennika „świata”. Następnie sprzątamy sznurek.

Jak dojść do 804? Poprzedni rok przycięty do trzech znaków (= „201”), a następnie pomnożony przez 4.

Długie wyjaśnienie i atrybucje

1: Zaczynamy od odrobiny przesady wynikającej z reguł. Liczba całkowita 3 jest bardzo ważną stałą w tym programie. Tutaj przypisujemy tę liczbę całkowitą do n. Musimy uwzględnić cały blok ze źródła. Może być nadmiarowy, ale dobrze się skompiluje, o ile zmienimy nazwę splitzmiennej, której będziemy potrzebować później. Źródło

Zamienione nazwy zmiennych:

split              > helloAndGoodbye

2: Ustaw ciąg początkowy („Hello world!”). Źródło

To bardzo osobista wiadomość dla naszej mamy. Więc oczywiście potrzebujemy trochę kryptografii, aby poradzić sobie z tymi typami NSA. W tym celu potrzebujemy parametrów, które teraz przygotowujemy.

3: Konwertuj greet(„Witaj, świecie!”) Na tablicę bajtów do solenia. Źródło

myString           > greet

4: Chociaż korzystamy z kryptografii, tak naprawdę nie musimy tworzyć instancji klasy MD5. Potrzebujemy jednak ciągu „MD5” przypisanego do jednego z naszych parametrów, aby można go było użyć w dalszej części - i nie jest to łatwe do znalezienia w użytecznym kodzie. Więc weźmiemy kolejny ... „skrót”… Raz jeszcze cały blok kodu zawarty zgodnie z regułami, chociaż potrzebujemy tylko drugiej linii. Źródło

5: Teraz potrzebujemy nazwy typu md5zmiennej ( MD5CryptoServiceProvider). To ifkolejna redundancja. Źródło

entity             > md5

6: Zdobądź pierwsze 3 (ooh, nasze stałe!) Znaki o nazwie typu. Źródło

s                  > strName
truncatedToNLength > HashAlgorithm

7: Trolling kodu: używanie DateTime.Nowoznaczałoby, że działałoby to tylko do 2019 roku. Aby uczynić to nieco bardziej przyszłym, używamy poprzedniego roku. Wtedy będzie działać do 2020 r .;-) Źródło

8: Konwertuj nasz previousYearna ciąg. Źródło

myInt              > previousYear

9: Hej, ponowne użycie kodu! ;-) Zdobądź pierwsze 3 (nasze stałe!) Postacie naszego roku. Źródło

s                  > myString
truncatedToNLength > totallyRandomString

10: Aaaaaaa i ... przekształć wynik z powrotem na liczbę całkowitą. Źródło

myString           > totallyRandomString

11: Eric Lippert poprawia każdą odpowiedź. Pomnóż przez 4 na rondzie. Źródło

y                  > myInt

12: Wyślij place(hasło) i greet(sól) przez PBKDF1, używając MD5 z x(obecnie 201*4 = 804) iteracjami. Źródło

Password           > place
SaltValueBytes     > b1
PasswordIterations > x

13: Jon Skeet poprawia również każdą odpowiedź. Konwertuj nasze pochodne hasło na bazę 64. Wyrzucamy bytestablicę. Źródło

bytes (first occurrence) > KeyBytes

14: Cóż za szalony losowy przypadek! Teraz mamy base64„MoM”. Dogodnie, tuż przed „MoM” jest singiel „/”. Podziel łańcuch z tym znakiem jako separator: Źródło

filePath          > base64

15: Hej, nasz ulubiony kawałek taśmy do ponownego użycia kodu! Zdobądź pierwsze 3 (stałe!) Litery last. Źródło

s                 > last

16: Usuń „!”. Źródło

str               > greet

17: MoM to nasz świat - więc spraw, aby sznur odzwierciedlał to (zamień „world” na „MoM”). Źródło

someTestString   > greet
someID           > place
sessionID        > truncatedToNLength

18: Na koniec przekonwertuj na małe litery. Przycinaj dla dokładności (lub być może dlatego, że jest to część bloku taśmy izolacyjnej). Źródło

wordToSearchReplacemntsFor > newString

19: Dane wyjściowe do konsoli. Źródło

_surface         > searchStr

Trochę „materiału bonusowego” / komentarza

  • Najpierw próbowałem każdej kombinacji wbudowanych skrótów kryptograficznych (każda w połączeniu z HMAC) i danych wejściowych („świat”, „Witaj świecie!”, „Witaj świecie”, „witaj świecie” itp.), Aby sprawdzić, czy coś cudownie dałoby użyteczny wynik, z którego można wyprowadzić „mamę” - zanim przejdzie się łatwą drogą po prostu szukania szeregu iteracji PDKDB1 (lub 2), które byłyby przydatne.

  • Nie był do końca zadowolony z wykorzystania roku jako danych wejściowych dla iteracji 201 * 4 = 804. Na początku próbowałem znaleźć użyteczny kod HttpStatusCode.Created(201) do użycia jako dane wejściowe - z „wymówką trollową” w stylu „stworzyliśmy nasz„ Hello world! ” ciąg, więc dobrą praktyką byłoby użycie tutaj kodu statusu „Utworzono”. Niestety, nigdy nie znalazłem zastosowania HttpStatusCodewyliczenia, które nie wprowadziłoby zależności od większości frameworku ASPAP .NET WebAPI.

  • Początek kodu (format ciągu „Hello world!”) Nigdy nie był oglądany po jego pierwszym dodaniu. Gdybym miał, tak, mógłbym zdać sobie sprawę, że przypisanie placebyło w rzeczywistości w innym bloku w źródle - więc mógłbym po prostu przypisać moją pochodną „mamę” placeraczej niż używać „świata”, a później go zastąpić. Ach tak.


5
+1 za „mama jest naszym światem”, a „Lippert i Skeet poprawiają każdą odpowiedź”.
Floris

„Przytnij na miarę ...” zachichotało.
Nit

24

Befunge 98

Mój kod:

var abc = function(){};
display: table-*
display: table-*
display: table-*
display: table-*
display: table-*
display: table-*
display: table-*
display: table-*
+
+
+
+
+
+
+
, new {area = ""}
byte z = x + y;
byte z = x + y;
byte z = x + y;
byte z = x + y;
byte z = x + y;
byte z = x + y;
byte z = x + y;
byte z = x + y;
display: table-*
+
+
+
+
+
+
+
+
, new {area = ""}
"1,23,4"
  String[] temp = data.split("\\s+\\^,?\"'\\|+");
List<Set<Integer>> foo;
"1,23,4"
+
: base(name)
: base(name)
, new {area = ""}
, new {area = ""}
10001.10010110011
10001.10010110011
10001.10010110011
+
+
+
, new {area = ""}
"1,23,4"
  String[] temp = data.split("\\s+\\^,?\"'\\|+");
"1,23,4"
, new {area = ""}
"1,23,4"
[5326, 4223, 1204]
Runnable prs = new Runnable() {
    public void run() {
        Document doc = null;
        try {
            doc = Jsoup.connect("http://play.radio.com/").get();

        } catch (IOException e) {

            e.printStackTrace();
        }
        parser.postDelayed(prs, 10000);
    }
};
"1,23,4"
$selector.append("somestuff");
$selector.append("somestuff");
-new Date().getTimezoneOffset()/60;
: base(name)
10001.10010110011
10001.10010110011
10001.10010110011
+
+
+
 [0000] push        ebp
 [0001] mov         ebp,esp
 [0003] push        edi
 [0004] push        esi
 [0005] push        ebx
 [0006] sub         esp,1Ch
 [0009] xor         eax,eax
 [000b] mov         dword ptr [ebp-20h],eax
 [000e] mov         dword ptr [ebp-1Ch],eax
 [0011] mov         dword ptr [ebp-18h],eax
 [0014] mov         dword ptr [ebp-14h],eax
 [0017] xor         eax,eax
 [0019] mov         dword ptr [ebp-18h],eax
*[001c] mov         esi,1
 [0021] xor         edi,edi
 [0023] mov         dword ptr [ebp-28h],1
 [002a] mov         dword ptr [ebp-24h],0
 [0031] inc         ecx
 [0032] mov         ebx,2
 [0037] cmp         ecx,2
 [003a] jle         00000024
 [003c] mov         eax,esi
 [003e] mov         edx,edi
 [0040] mov         esi,dword ptr [ebp-28h]
 [0043] mov         edi,dword ptr [ebp-24h]
 [0046] add         eax,dword ptr [ebp-28h]
 [0049] adc         edx,dword ptr [ebp-24h]
 [004c] mov         dword ptr [ebp-28h],eax
 [004f] mov         dword ptr [ebp-24h],edx
 [0052] inc         ebx
 [0053] cmp         ebx,ecx
 [0055] jl          FFFFFFE7
 [0057] jmp         00000007
 [0059] call        64571ACB
 [005e] mov         eax,dword ptr [ebp-28h]
 [0061] mov         edx,dword ptr [ebp-24h]
 [0064] lea         esp,[ebp-0Ch]
 [0067] pop         ebx
 [0068] pop         esi
 [0069] pop         edi
 [006a] pop         ebp
 [006b] ret
10001.10010110011
+
: base(name)
, new {area = ""}
"1,23,4"
List<Set<Integer>> foo;

"1,23,4"
+
10001.10010110011
10001.10010110011
10001.10010110011
+
+
+
, new {area = ""}
, new {area = ""}
def logme(func):
    def wrapped(*args):
        for arg in args: print str(arg)
        func(*args)
    return wrapped

@logme
def my_func(*args):
    res = 1
    for arg in args :
        print "Multiplying %s by %s" % (arg, res)
        res*=arg
    print res
    return res

Działa to, ponieważ pierwszy v(w pierwszym wierszu) wysyła adres IP w dół. Więc zasadniczo wykonujemy ten program:

dddddddd+++++++,bbbbbbbbd++++++++," L"+::,,111+++," ","[R           }"$$-:111+++             *                            1+:,"L "+111+++,,d     @

Co to robi:

  • dddddddd+++++++,popycha 104i drukuje
  • bbbbbbbbd++++++++,popycha 101i drukuje
  • " L"+,wypycha 32i wartość ascii L, a następnie dodaje je, duplikuje dwukrotnie i drukuje dwukrotnie
  • Do tego, który został zduplikowany, 111+++,dodaje 3 i drukuje
  • " ",drukuje spację. "[R }"$$-:111+++wypycha a 9i powiela je, a następnie dodaje 3 do najwyższej wartości
  • * mnoży dwie najlepsze wartości
  • 1+:, zwiększa liczbę, duplikuje i drukuje
  • "L "+111+++,odbitki o. ,wypisuje mwcześniejsze i d @wypycha 13(co nie robi nic) i kończy program.

4
I tak. Właściwie to uruchomiłem i wypisujehello mom
Justin

14

Jawa

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);
        }
    }
}

Wynik

Answer=42
Hello=Mom

Jest tam nieznośny =, ale to najlepsze, co mogłem zrobić

https://stackoverflow.com/a/1050075/573421


Niezwykłe znalezisko!
Floris

1
Właściwie przeszukałem trochę przed rozpoczęciem wyzwania i nie spodziewałem się znaleźć kompletnych rozwiązań tego typu w jednym poście. Fajnie, że i tak znalazłeś!
Dennis Jaheruddin

11

do

Większość tego kodu pochodzi z odpowiedzi na pytanie Znajdź początek pierwszego słowa, które jest palindromem [sic] opublikowanym przez BLUEPIXY , który wypisuje to słowo mom. W wierszach 21 i 22 hellojest drukowany fragmentem kodu na końcu odpowiedzi na printf („%%% s”, „hello”) użytkownika 142019 (który na szczęście dodał średnik na końcu) oraz odstęp między słowa pochodzą z odpowiedzi na Jak drukować przestrzeń za pomocą wypełnienia wc M przez Oehm .

Wynik:

%hello        mom

Niestety nie byłem w stanie wyeliminować dodatkowych spacji ani znaku procentu :(

Kod źródłowy:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int isPalindrome(const char *str){
    const char *front, *back;
    front=str;
    back =str + strlen(str)-1;
    for(;front<back;++front,--back){
        while(!isalpha(*front))++front;//isalnum?
        while(!isalpha(*back))--back;
        if(front > back || tolower(*front)!=tolower(*back))
            return 0;
    }
    return 1;
}

int main(){
    const char *data="Hello mom and dad, how is it going?";
    char *p, *src;
    printf("%%%s", "hello");
    printf("        ");
    p=src=strdup(data);
    for(;NULL!=(p=strtok(p, " \t\n,.!?"));p=NULL){
        if(isPalindrome(p)){
            printf("%s\n", p);
            break;
        }
    }
    free(src);
    return 0;
}

7

Jawa

import java.io.ByteArrayOutputStream;
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Arrays;
import java.util.Random;

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author LH
 */
public class Kopierpaste
{

    //https://stackoverflow.com/questions/15182496/why-does-this-code-using-random-strings-print-hello-world
    //randomizer code for the first String
    public static String randomString(int i)
    {
        Random ran = new Random(i);
        StringBuilder sb = new StringBuilder();
        for (int n = 0;; n++)
        {
            int k = ran.nextInt(27);
            if (k == 0)
            {
                break;
            }

            sb.append((char) ('`' + k));
        }

        return sb.toString();
    }

    public static void main(String[] nope)
    {
        //catching a System.out() based code snippet
        //https://stackoverflow.com/questions/4183408/redirect-stdout-to-a-string-in-java
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        System.setOut(new PrintStream(baos));
        //same as randomizer
        //getting hello, world inside a ByteArray
        System.out.println(randomString(-229985452) + " " + randomString(-147909649));

        //undo the redirecct of System.out()
        //https://stackoverflow.com/questions/4183408/redirect-stdout-to-a-string-in-java && https://stackoverflow.com/a/14716148/1405227
        System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));


        //stringify the out of first part
        //https://stackoverflow.com/questions/4183408/redirect-stdout-to-a-string-in-java
        String text = baos.toString();


        //getting rid of the world part
        //https://stackoverflow.com/a/17008136/1405227
        String firstWord = text.substring(0, text.indexOf(' '));

        //needing the word Mom
        //https://stackoverflow.com/a/8341513/1405227
        //history -> a
        String[] a = new String[]
        {
            "hey", "you", "Mom"
        };

        //stitching the array together in a certain fashion ([elem1, elem2, elem3]
        //https://stackoverflow.com/a/2822736/1405227
        //myarray->a
        String b = Arrays.toString(a);

        //getting rid of the ,s
        //https://stackoverflow.com/a/7552284/1405227 stripping annoying bullcrap out
        //result ->c
        //yourString ->b
        String c = b.replaceAll("[-+.^:,]", "");


        //getting the Mom] part
        //https://stackoverflow.com/a/15317037/1405227
        //sentence -> c
        String lastToken = c.replaceAll(".* ", "");

        //getting rid of more crap
        //https://stackoverflow.com/a/18599016/1405227
        //message -> lastToken
        lastToken = lastToken.replaceAll("\\W", "");


        //finally out
        //https://stackoverflow.com/a/19393222/1405227
        //name -> firstWord
        //income -> lastToken
        System.out.println(firstWord + " " + lastToken);
    }
}

Dokumentacja i linki źródłowe znajdują się w komentarzach (zaczynające się od //)

czysta lista użytych źródeł


+1. Chciałem wybrać losowe podejście do hello world, ale nudziłem się i zrobiłem to bardziej prosto. ładnie wykonane
durron597

tak, pamiętam o tym i aby to wydostać musiałem nadużyć system.out przekierowanie hax. zajęło mi trochę czasu, aby uzyskać mamę z moim podejściem i kilka nieprzyjemnych wyrażeń regularnych. ale na szczęście Google go
wykopał
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.