Skrót do wyrażenia


12

Zadanie:

Utwórz program, który na przykład pobierze akronim dftbai wygeneruje kilka możliwych fraz, które akronim mógłby oznaczać. Możesz używać listy słów do wprowadzania słów. Inspirowany https://www.youtube.com/watch?v=oPUxnpIWt6E

Przykład:

input: dftba
output: don't forget to be awesome

Zasady:

  • Twój program nie może wygenerować tej samej frazy za każdym razem dla tego samego akronimu, musi istnieć losowość
  • Dane wejściowe będą pisane małymi literami
  • Opublikuj kilka przykładów (dane wejściowe i wyjściowe)
  • Każdy język jest akceptowany
  • To , więc większość entuzjastów wygrywa!

Pokaż przykładowy wynik.
Mukul Kumar

@MukulKumar dodał to
TheDoctor

1
To musi mieć sens? czy jakaś kombinacja?
Mukul Kumar

Nie musi to mieć znaczenia
TheDoctor

Ile razy użytkownik może uruchamiać program? W pewnym momencie program może jedynie złamać regułę nr 1.
Pan Lister

Odpowiedzi:


8

HTML, CSS i JavaScript

HTML

<div id='word-shower'></div>
<div id='letter-container'></div>

CSS

.letter {
    border: 1px solid black;
    padding: 5px;
}

#word-shower {
    border-bottom: 3px solid blue;
    padding-bottom: 5px;
}

JS

var acronym = 'dftba', $letters = $('#letter-container')
for (var i = 0; i < acronym.length; i++) {
    $letters.append($('<div>').text(acronym[i]).attr('class', 'letter'))
}

var $word = $('#word-shower')
setInterval(function() {
    $.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://randomword.setgetgo.com/get.php') + '&callback=?', function(word) {
        word = word.contents.toLowerCase()
        $word.text(word)
        $letters.children().each(function() {
            if (word[0] == this.innerText) {
                this.innerText = word
                return
            }
        })
    })
}, 1000)

Wykorzystuje generator losowych słów i wyświetla wyniki na żywo podczas wyszukiwania słów.

Oto skrzypce, jeśli chcesz go uruchomić samodzielnie.

Oto GIF wyniku:

animowane wyjście


7

Jawa

Pobiera listę słów z Wikisłownika. Wybiera losowe słowo z listy, która zaczyna się od właściwej litery. Następnie używa rekursywnie Google, aby wyszukać możliwe następne słowa. Wyświetla listę możliwości. Jeśli uruchomisz go ponownie z tym samym akronimem, uzyskasz różne wyniki.

import java.io.*;
import java.net.*;
import java.util.*;

public class Acronym {

    static List<List<String>> wordLists = new ArrayList<List<String>>();
    static {for(int i=0; i<26; i++) wordLists.add(new ArrayList<String>());}
    static String acro;

    public static void main(String[] args) throws Exception {
        acro = args[0].toLowerCase();

        //get a wordlist and put words into wordLists by first letter
        String s = "http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/PG/2006/04/1-10000";
        URL url = new URL(s);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            if(inputLine.contains("title")) {
                int start = inputLine.indexOf("title=\"");
                int end = inputLine.lastIndexOf("\">");
                if(start>=0 && end > start) { 
                    String word = inputLine.substring(start+7,end).toLowerCase();
                    if(!word.contains("'") && !word.contains(" ")) {
                        char firstChar = word.charAt(0);
                        if(firstChar >= 'a' && firstChar <='z') {
                            wordLists.get(firstChar-'a').add(word);
                        }
                    }
                }
            }
        }

        //choose random word from wordlist starting with first letter of acronym
        Random rand = new Random();
        char firstChar = acro.charAt(0);
        List<String> firstList = wordLists.get(firstChar-'a');
        String firstWord = firstList.get(rand.nextInt(firstList.size()));

        getSuggestions(firstWord,1);

    }

    static void getSuggestions(String input,int index) throws Exception {
        //ask googleSuggest for suggestions that start with search plus the next letter as marked by index
        String googleSuggest = "http://google.com/complete/search?output=toolbar&q=";
        String search = input + " " + acro.charAt(index);
        String searchSub = search.replaceAll(" ","%20");

        URL url = new URL(googleSuggest + searchSub);
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            String[] parts = inputLine.split("\"");
            for(String part : parts) {
                if(part.startsWith(search)) {
                    //now get suggestions for this part plus next letter in acro
                    if(index+1<acro.length()) {
                        String[] moreParts = part.split(" ");
                        Thread.sleep(100);
                        getSuggestions(input + " " + moreParts[index],index+1);
                    }
                    else {
                        String[] moreParts = part.split(" ");
                        System.out.println(input + " " + moreParts[index]);
                    }
                }
            }
        }
        in.close();
    }
}

Przykładowe dane wyjściowe:

$ java -jar Acronym.jar ght
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horror thriller
great horror tv
great horror thriller
great horror titles
great horror tv
great holiday traditions
great holiday treats
great holiday toasts
great holiday tech
great holiday travel
great holiday treat
great holiday tips
great holiday treat
great holiday toys
great holiday tour
great harvest trek
great harvest tulsa
great harvest taylorsville
great harvest temecula
great harvest trek
great harvest twin
great harvest tempe
great harvest twin
great harvest turners
great harvest twitter
great horned toad
great horned toads
great horned tomato
great horned tomato
great horned turtle

Niestety Google sugeruje, że URL przestał działać po pewnym czasie - być może moje IP zostało umieszczone na czarnej liście Google za niewłaściwe użycie ?!


5

Rubin

taki rubinowy. wielu doża. łał.

Wersja online

@prefix = %w[all amazingly best certainly crazily deadly extra ever few great highly incredibly jolly known loftily much many never no like only pretty quirkily really rich sweet such so total terribly utterly very whole xtreme yielding zippily]
@adjective = %w[appealing app apl attractive brave bold better basic common challenge c++ creative credit doge durable dare enticing entertain extreme fail fabulous few favourite giant gigantic google hello happy handy interesting in improve insane jazz joy j java known kind kiwi light laugh love lucky low more mesmerise majestic open overflow opinion opera python power point popular php practice quirk quit ruby read ready stunning stack scala task teaching talking tiny technology unexpected usual useful urban voice vibrant value word water wow where xi xanthic xylophone young yummy zebra zonk zen zoo]

def doge(input)
  wow = ""
  input.chars.each_slice(2) do |char1, char2|
    if char2 == nil
      wow << (@prefix + @adjective).sample(1)[0] + "."
      break
    end
    wow << @prefix.select{|e| e[0] == char1}.sample(1)[0]
    wow << " "
    wow << @adjective.select{|e| e[0] == char2}.sample(1)[0]
    wow << ". "
  end
  wow
end

puts doge("dftba")
puts doge("asofiejgie")
puts doge("iglpquvi")

Przykłady:

deadly favourite. terribly better. challenge.
all scala. only favourite. incredibly enticing. jolly giant. incredibly extreme. 
incredibly gigantic. loftily popular. quirkily usual. very interesting.

z pewnością lekkie. kiedykolwiek głos. bardzo gotowy. dodatkowy stos. strasznie atrakcyjny. nigdy nie oszałamiające. cała rozrywka. bogate oszałamiające. tylko ulubiony. niezwykle rubinowy.
izabera

śmiertelna porażka. okropnie odważny. Szczęściarz. wszystko scala. tylko kilka. niesamowicie zabawne. Jolly Google. niesamowicie zabawne. niesamowicie google. loftily python. dziwnie nieoczekiwane. bardzo poprawić.

4

Matematyka

Niektóre terminy, które często występują w akronimach.

terms = {"Abbreviated", "Accounting", "Acquisition", "Act", "Action", "Actions", "Activities", "Administrative", "Advisory", "Afloat", "Agency", "Agreement", "Air", "Aircraft", "Aligned", "Alternatives", "Analysis", "Anti-Surveillance", "Appropriation", "Approval", "Architecture", "Assessment", "Assistance", "Assistant", "Assurance", "Atlantic", "Authority", "Aviation", "Base", "Based", "Battlespace", "Board", "Breakdown", "Budget", "Budgeting", "Business", "Capabilities", "Capability", "Capital", "Capstone", "Category", "Center", "Centric", "Chairman", "Change", "Changes", "Chief", "Chief,", "Chiefs", "Closure", "College", "Combat", "Command", "Commandant", "Commander","Commander,", "Commanders", "Commerce", "Common", "Communications", "Communities", "Competency", "Competition", "Component", "Comptroller", "Computer", "Computers,", "Concept", "Conference", "Configuration", "Consolidated", "Consulting", "Contract", "Contracting", "Contracts", "Contractual", "Control", "Cooperative", "Corps", "Cost", "Council", "Counterintelligence", "Course", "Daily", "Data", "Date", "Decision", "Defense", "Deficiency", "Demonstration", "Department", "Depleting", "Deployment", "Depot", "Deputy", "Description", "Deskbook", "Determination", "Development", "Direct", "Directed", "Directive", "Directives", "Director", "Distributed", "Document", "Earned", "Electromagnetic", "Element", "Engagement", "Engineer", "Engineering", "Enterprise", "Environment", "Environmental", "Equipment", "Estimate", "Evaluation", "Evaluation)", "Exchange", "Execution", "Executive", "Expense", "Expert", "Exploration", "Externally", "Federal", "Final", "Financial", "Findings", "Fixed","Fleet", "Fleet;", "Flight", "Flying", "Followup", "Force", "Forces,", "Foreign", "Form", "Framework", "Full", "Function", "Functionality", "Fund", "Funding", "Furnished", "Future", "Government", "Ground", "Group", "Guidance", "Guide", "Handbook", "Handling,", "Hazardous", "Headquarters", "Health", "Human", "Identification", "Improvement", "Incentive", "Incentives", "Independent", "Individual", "Industrial", "Information", "Initial", "Initiation", "Initiative", "Institute", "Instruction", "Integrated", "Integration", "Intelligence", "Intensive", "Interdepartmental", "Interface", "Interference", "Internet", "Interoperability", "Interservice", "Inventory", "Investment", "Joint", "Justification", "Key", "Knowledge", "Lead", "Leader", "Leadership", "Line", "List", "Logistics", "Maintainability", "Maintenance", "Management", "Manager", "Manual", "Manufacturing", "Marine", "Master", "Material", "Materials", "Maturity", "Measurement", "Meeting", "Memorandum", "Milestone", "Milestones", "Military", "Minor", "Mission", "Model", "Modeling", "Modernization", "National", "Naval", "Navy", "Needs", "Network", "Networks", "Number", "Objectives", "Obligation", "Observation", "Occupational", "Offer", "Office", "Officer", "Operating", "Operational", "Operations", "Order", "Ordering", "Organization", "Oversight", "Ozone", "Pacific", "Package", "Packaging,", "Parameters", "Participating", "Parts", "Performance", "Personal", "Personnel", "Planning", "Planning,", "Plans", "Plant", "Point", "Policy", "Pollution", "Practice", "Preferred", "Prevention", "Price", "Primary", "Procedure", "Procedures", "Process", "Procurement", "Product", "Production", "Professional", "Program", "Programmatic", "Programming", "Project", "Proposal", "Protection", "Protocol", "Purchase", "Quadrennial", "Qualified", "Quality", "Rapid", "Rate", "Readiness", "Reconnaissance", "Regulation", "Regulations", "Reliability", "Relocation", "Repair", "Repairables", "Report", "Reporting", "Representative", "Request", "Requirement", "Requirements", "Requiring", "Requisition", "Requisitioning", "Research", "Research,", "Reserve", "Resources", "Responsibility", "Review", "Reviews", "Safety", "Sales", "Scale", "Secretary", "Secure", "Security", "Selection", "Senior", "Service", "Services", "Sharing", "Simulation", "Single", "Small", "Software", "Source", "Staff", "Standard", "Standardization", "Statement", "Status", "Storage,", "Strategy", "Streamlining", "Structure", "Submission", "Substance", "Summary", "Supplement", "Support", "Supportability", "Surveillance", "Survey", "System", "Systems", "Subsystem", "Tactical", "Target", "Targets", "Team", "Teams", "Technical", "Technology", "Test", "Tool", "Total", "Training", "Transportation", "Trouble", "Type", "Union", "Value", "Variable", "Warfare", "Weapon", "Work", "Working", "X-Ray", "Xenon", "Year", "Yesterday", "Zenith", "Zoology"};

Kod

f[c_]:=RandomChoice[Select[terms,(StringTake[#,1]==c)&]]
g[acronym_]:=Map[f,Characters@acronym]

Przykłady

Dziesięciu losowo wygenerowanych kandydatów na akronim ABC .

Table[Row[g["ABC"], "  "], {10}] // TableForm

Podział działań Korpus
Rachunkowość Budżet Handel
Kontrola powietrzna
Podział Podział Komputer
Działanie Budżet Koszt
Wyrównany podział Wspólny
wyrównany budżet Planowanie
Doradztwo w zakresie możliwości budżetowych
Wyrównany pancernik Wspólny pancernik
anty-inwigilacyjny Kontroler


FMP

Table[Row[g["FMP"], "  "], {10}] // TableForm

Ustalenia Menedżer protokołu
Ostateczny podręcznik Zakup
Przelotowy personel
Pełny plan produkcji
Formularz pomiaru Programowanie
Model finansowy Programowy Program
przyszłej modernizacji Propozycja
pakietu finansowego Pomiar
Formularz, Planowanie utrzymania
Pełny modelowanie Programmatic


STM

Table[Row[g["STM"], "  "], {10}] // TableForm

Normalizacja Całkowita modernizacja
Usługa Taktyczny kamień milowy
Nadzór Zarządzanie transportem
Podsystem Problemy z materiałami
Test struktury
Skala wojskowa Testowanie materiałów Materiały
strategiczne Modernizacja narzędzia
Mała technologia Drobne
wsparcie Pomoc transportowa Stan produkcji Zarządzanie narzędziami


CRPB

Table[Row[g["CRPB"], "  "], {10}] // TableForm

Ochrona przepisów spółdzielczych Ochrona
Dowódca biznesowy Prośba o
zmiany zasad Programowanie naprawy,
zamknięcie biznesu Recenzje Projekt Budżet
Handel Przepisy Parametry Podstawowa
umowa Szybka cena Baza
Przeniesienie uczelni Praktyka Budżetowanie
Raportowanie kursu Personel Battlespace
Wymagania dotyczące kursu Budżet


SARDE

Table[Row[g["SARDE"], "  "], {10}] // TableForm

Uzupełnienie Działania Wymagające dyrektywy Szacunkowa
skala Wyrównane wymaganie Dzienny szacunek
Sekretarz Atlantic zapotrzebowania Dyrektor Koszt Wydatki na
oprogramowanie Przegląd działania Bezpośrednie poszukiwania
Wsparcie Ustawa Gotowość Obrona
Oprogramowanie elektromagnetyczne Skrócone wymaganie Wymiana decyzji
Poddanie oceny Ocena Opis zapotrzebowania Opis Wykonawczy
Usprawnienie rozliczania Wskaźnik składu Oceny Ocena
Nadzór Asystent Zapotrzebowanie Zajezdnia Zaangażowanie
Badanie Pomoc Pomoc Zasoby Niedobór


2

re

To w większości produkuje bzdury, ale czasami produkuje coś sensownego lub coś tak niemądrego, by być humorem.

Słowa są pobierane z tego pliku JSON (~ 2,2 MB).

Program pobiera akronim od pierwszego argumentu wiersza poleceń i obsługuje opcjonalny drugi argument, który informuje program, ile fraz ma wygenerować.

import std.file : readText;
import std.conv : to;
import std.json, std.random, std.string, std.stdio, std.algorithm, std.array, std.range;

void main( string[] args )
{
    if( args.length < 2 )
        return;

    try
    {
        ushort count = 1;

        if( args.length == 3 )
            count = args[2].to!ushort();

        auto phrases = args[1].toUpper().getPhrases( count );

        foreach( phrase; phrases )
            phrase.writeln();
    }
    catch( Throwable th )
    {
        th.msg.writeln;
        return;
    }
}

string[] getPhrases( string acronym, ushort count = 1 )
in
{
    assert( count > 0 );
}
body
{
    auto words = getWords();
    string[] phrases;

    foreach( _; 0 .. count )
    {
        string[] phrase;

        foreach( chr; acronym )
        {
            auto matchingWords = words.filter!( x => x[0] == chr ).array();
            auto word = matchingWords[uniform( 0, matchingWords.length )];
            phrase ~= word;
        }

        phrases ~= phrase.join( " " );
    }

    return phrases;
}

string[] getWords()
{
    auto text = "words.json".readText();
    auto json = text.parseJSON();
    string[] words;

    if( json.type != JSON_TYPE.ARRAY )
        throw new Exception( "Not an array." );

    foreach( item; json.array )
    {
        if( item.type != JSON_TYPE.STRING )
            throw new Exception( "Not a string." );

        words ~= item.str.ucfirst();
    }

    return words;
}

auto ucfirst( inout( char )[] str )
{
    if( str.length == 1 )
        return str.toUpper();

    auto first = [ str[0] ];
    auto tail  = str[1 .. $];

    return first.toUpper() ~ tail.toLower();
}

Przykłady :

D:\Code\D\Acronym>dmd acronym.d

D:\Code\D\Acronym>acronym utf 5
Unchallenged Ticklebrush Frication
Unparalysed's Toilsomeness Fructose's
Umpiring Tableland Flimsily
Unctuousness Theseus Flawless
Umbrella's Tarts Formulated

2

GRZMOTNĄĆ

for char in $(sed -E s/'(.)'/'\1 '/g <<<"$1");
do
    words=$(grep "^$char" /usr/share/dict/words)
    array=($words)
    arrayCount=${#array[*]}
    word=${array[$((RANDOM%arrayCount))]}
    echo -ne "$word " 
done
echo -ne "\n"

Więc: $ bash acronym-to-phrase.sh dftbaspowodowało

deodorization fishgig telolecithal bashlyk anapsid
demicivilized foretell tonogram besmouch anthropoteleological
doer fightingly tubulostriato bruang amortize 


I: $ bash acronym-to-phrase.sh diyspowodowało

decanically inarguable youthen
delomorphous isatin yen
distilling inhumorously yungan


Wreszcie: $ bash acronym-to-phrase.sh rsvp

retzian sensitizer vestiarium pathognomonical
reaccustom schreiner vincibility poetizer
refractorily subspherical villagey planetule

...

Moja początkowa reakcja? bezlitosny skwierczący transport


1

Pyton

Prawdopodobnie nie wygra to żadnych konkursów popularności, ale pomyślałem, że Python potrzebuje reprezentacji. Działa to w Python 3.3+. Pożyczyłem plik słów @ tony-h json ( znajdź go tutaj ). Zasadniczo ten kod po prostu pobiera listę json i porządkuje wszystkie słowa w słowniku indeksowanym literami alfabetu. Następnie cokolwiek akronim przekazany do aplikacji python jest używany jako indeks do słownika. Dla każdej litery w akronimie losowe słowo jest wybierane ze wszystkich słów indeksowanych pod tą literą. Możesz również podać żądaną liczbę wyników lub jeśli nic nie zostanie określone, zostaną wygenerowane 2 opcje.

Kod (zapisałem go jako frazę.py):

import argparse
import json
import string
from random import randrange

parser = argparse.ArgumentParser(description='Turn an acronym into a random phrase')
parser.add_argument('acronym', nargs=1)
parser.add_argument('iters',nargs='?',default=2,type=int)
args = parser.parse_args()

acronym=args.acronym[0]
print('input: ' + acronym)

allwords=json.load(open('words.json',mode='r',buffering=1))

wordlist={c:[] for c in string.ascii_lowercase}
for word in allwords:
    wordlist[word[0].lower()].append(word)

for i in range(0,args.iters):
    print('output:', end=" ")
    for char in acronym:
        print(wordlist[char.lower()][randrange(0,len(wordlist[char.lower()]))], end=" ")
    print()

Niektóre przykładowe wyniki:

$ python phraseit.py abc
input: abc
output: athabaska bookish contraster
output: alcoholism bayonet's caparison

Inne:

$ python phraseit.py gosplet 5
input: gosplet
output: greenware overemphasiser seasons potential leprosy escape tularaemia
output: generatrix objectless scaloppine postulant linearisations enforcedly textbook's
output: gutturalism oleg superstruct precedential lunation exclusion toxicologist
output: guppies overseen substances perennialises lungfish excisable tweed
output: grievously outage Sherman pythoness liveable epitaphise tremulant

Wreszcie:

$ python phraseit.py nsa 3
input: nsa
output: newsagent spookiness aperiodically
output: notecase shotbush apterygial
output: nonobjectivity sounded aligns
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.